일반적으로 레거시에서는 유니티 내장 셰이더를 바꾸기 위해서 다음과 같은 기능을 사용합니다.
바로 유니티 다운로드 아카이브로 가서
https://unity3d.com/kr/get-unity/download/archive?_ga=2.119300289.95093767.1609142920-1967785289.1604284661
원하는 버전의 내장 셰이더를 선택하여 다운로드 받고,
이를 받아 압축을 풀고 셰이더를 수정한 후 그 셰이더를 대신 사용하면 되는 것이었습니다.
그런데 URP에서는 좀 다른게
Assets 폴더가 있고 Packages 폴더가 있는데, Packages는 우리가 건드릴 수 없는 폴더입니다.
그런데 핵심 내장 셰이더들이 저 Packges 폴더에 들어 있어요. 즉 다운로드 아카이브에서 바꿀 필요가 없다는 겁니다.
그럼 어떻게 저 내장 셰이더를 수정할까요?
이렇게 타고 들어가면 수정 가능할까요?
네 저걸 오른클릭해서 익스플로러로 보기 해서 타고 들어가서 수정하면 수정됩니다.
근데, 저렇게 수정하면 프로젝트를 껐다 켜면 다시 초기화된다는게 문제입니다.
그것은 왜 그러냐면
사실 저 Packages 폴더 안에는
json 파일이 하나만 있고,
그 안에는
{
"dependencies": {
"com.unity.collab-proxy": "1.2.16",
"com.unity.ide.rider": "1.1.4",
"com.unity.ide.vscode": "1.2.0",
"com.unity.polybrush": "1.0.2",
"com.unity.render-pipelines.universal": "7.3.1",
"com.unity.terrain-tools": "3.0.1-preview",
"com.unity.test-framework": "1.1.14",
"com.unity.textmeshpro": "2.0.1",
"com.unity.timeline": "1.2.17",
"com.unity.ugui": "1.0.0",
"com.unity.modules.ai": "1.0.0",
"com.unity.modules.androidjni": "1.0.0",
"com.unity.modules.animation": "1.0.0",
"com.unity.modules.assetbundle": "1.0.0",
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.cloth": "1.0.0",
"com.unity.modules.director": "1.0.0",
"com.unity.modules.imageconversion": "1.0.0",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0",
"com.unity.modules.particlesystem": "1.0.0",
"com.unity.modules.physics": "1.0.0",
"com.unity.modules.physics2d": "1.0.0",
"com.unity.modules.screencapture": "1.0.0",
"com.unity.modules.terrain": "1.0.0",
"com.unity.modules.terrainphysics": "1.0.0",
"com.unity.modules.tilemap": "1.0.0",
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.uielements": "1.0.0",
"com.unity.modules.umbra": "1.0.0",
"com.unity.modules.unityanalytics": "1.0.0",
"com.unity.modules.unitywebrequest": "1.0.0",
"com.unity.modules.unitywebrequestassetbundle": "1.0.0",
"com.unity.modules.unitywebrequestaudio": "1.0.0",
"com.unity.modules.unitywebrequesttexture": "1.0.0",
"com.unity.modules.unitywebrequestwww": "1.0.0",
"com.unity.modules.vehicles": "1.0.0",
"com.unity.modules.video": "1.0.0",
"com.unity.modules.vr": "1.0.0",
"com.unity.modules.wind": "1.0.0",
"com.unity.modules.xr": "1.0.0"
}
}
이렇게 어떤 모듈이 깔려 있는지에 대한 디펜던시만 나오기 때문입니다.
그럼 실체는 어디있느냐?
여기의 실체는
이렇게 라이브러리 안의 패키지 캐시 안에 들어 있습니다.
즉 이 부분은 수정해도 다시 원래대로 금방 복구되는 것이지요.
그럼 어떻게 수정하느냐...
바로 이렇게, 패키지 캐시에서 패키지 폴더로 복사를 해 줍니다. 더 이상 캐시로 남아 있지 않게 말이지요
실체화 시켜준다고 해야 하나.
그리고나서
이렇게 방금 옮긴 패키지를 언인스톨해주면 됩니다.
그러면 패키지 폴더에 복사해 놓은 패키지 폴더가 사용되게 되고, 이제 그 안에 있는 셰이더들을 수정하면 다시 원래대로 복구되지 않고 계속 쓸 수 있게 됩니다.
'유니티 엔진' 카테고리의 다른 글
유니티 특정 API 로 에디터 돌리기 실패시 팁 (0) | 2021.01.08 |
---|---|
URP 에서 사용가능한 모바일 하드웨어는 무엇인가? (0) | 2021.01.04 |
이펙트와 찌꺼기 (VFX Artifacts)와 밉맵(mipmap)의 관계 (1) | 2020.11.29 |
URP의 최소사양은 얼마인가? (0) | 2020.11.09 |
유니티 Failed to load window layout 에러 (11) | 2020.09.24 |
댓글