피격을 당할 시 붉은색으로 갔다가 돌아오는 플래쉬 효과를 만들고 싶습니다.
그래서 portrait.SetMeshColorAll(flashColor); 와 같은 식으로 만들었다가
portrait.ResetMeshMaterialToBatch() 를 사용하여 붉은색이 없어지도록 하였는데,
이를 실행하면 텍스쳐도 원상복구가 되어서 portrait 캐릭터가 입고 있던 옷이 사라집니다.
그래서 현재 portrait 마테리얼에서 사용하는 색상을 가져와서 저장해뒀다가
그 색상을 portrait.SetMeshColorAll(basicColor) 이런식으로 해줘야 하나 싶은데
portrait에서 현재 마테리얼의 색상을 가져오는것을 찾지 못하고 있습니다.
해당 색상을 가져오는 방법이 있는지요?
아니면 다른 방식으로 색상만 원상태로 돌려놓는 방법이 있는지 궁금합니다.
안녕하세요!
이번에 업데이트된 AnyPortrait v1.3.5에서 "메시 색상 변경 불가 버그"가 수정되었으며, "Refresh Meshes 기능 사용시 하나의 루트 유닛만 보이기"가 반영되었습니다.
이슈를 제보해주셔서 툴을 개선할 수 있었습니다.
감사합니다!
Eng)
In this updated AnyPortrait v1.3.5, the "mesh color cannot be changed by script" bug has been fixed, and "only one root unit is visible when using the Refresh Meshes function" has been applied.
문제가 해결되어서 다행입니다!
이 이슈를 다루면서 발견된 색상 문제, Refresh Meshes 문제는 다음 업데이트에서 개선하겠습니다.
앞으로도 문제가 생기면 언제든 연락주세요!
감사합니다, 그리고 새해 복 많이 받으세요! ^^
감사합니다!
새로운 Portrait를 생성하여 하나하나 다시 작업하다가 베이크 후 보니까
같은 문제가 생기길래 호다닥 보고 드리려고 달려왔는데
이미 문제를 해결하셨군요.
말씀해 주신 대로 Transparency Sort Mod과의 설정 문제였던 것 같습니다.
해당 설정을 건들인지 몇 개월은 지나서
지난 버전의 프로젝트도 분명 같은 설정 이었을 텐데
왜 이제서 문제가 터졌는지 의아하네요...
Reflesh를 여러번 누르면 대기화면에서는 털복숭이 괴물이 되긴 하지만(왼쪽)
게임 내에서는 정상 작동 하고 있으니 해결된 것 같습니다! (오른쪽 사진)
혹시라도 다른 문제가 생기면 연락드리겠습니다. (부디 없기를..)
연말 마지막 날 밤까지 하루종일 고생 많으셨습니다.
새해 복 많이 받으세요!
안녕하세요!
파일 보내주셔서 검토해보았습니다.
캐릭터 파일 자체에서는 저희가 염려했던 문제가 없어서 외부의 요인으로 다시 눈을 돌려서 검사를 했습니다.
아무것도 없는 유니티 씬에서는 정상적으로 렌더링이 되는 것을 볼 수 있었습니다.
그러다 몇가지 설정을 테스트해보던 중, "Transparency Sort Mode" 설정을 변경했더니 초기에 문의 주셨던 것과 완전히 동일한 현상이 나타남을 발견했습니다.
저희가 찾은 상황이 맞는지 아래의 설명을 확인해주시길 바랍니다.
아래의 설명과 유사한 설명을 다음의 페이지에서도 볼 수 있습니다.
https://rainyrizzle.github.io/kr/AdvancedManual/AD_SortingLayer.html
(1) 유니티의 "Project Settings > Graphics"에서 "Transparency Sort Mode"의 값을 "Custom Axis"로 변경하고, "Transparency Sort Axis"를 기본값인 (0, 0, 1)에서 (0, 1, 0)으로 변경합니다.
(2) 처음에 문의 주셨던 것과 완벽히 동일한 모습으로 이상하게 렌더링이 됩니다.
이렇게 설정하면 아래에 있는 메시들이 앞으로 나와서 렌더링됩니다.
주로 2D 탑뷰 게임에서 쓰이는 방식인데, 별도의 처리가 없다면 여러개의 메시로 구성된 AnyPortrait의 캐릭터들은 위와 같이 이상하게 렌더링이 되게 됩니다.
(1) 만약 "Transparency Sort Mode"의 값이 일반적인 "Default" 또는 "Orthographic"이었다면,
(2) 문제없이 렌더링이 될 수 있습니다.
하지만 "Custom Axis"를 사용하고자 한다면, 앞서 안내드렸던 "Sorting Group"을 필수적으로 사용하셔야 합니다.
(1) 캐릭터를 선택합니다.
(2) "Sorting Group" 컴포넌트를 추가합니다.
(3) 만약 Sorting Layer나 기본 Sorting Order 값을 변경하고자 한다면, 여기서 변경합니다.
Sorting Group을 AnyPortrait와 함께 사용하기 위해서는 설정을 변경해야합니다.
(1) "Sorting Order Option"을 "Depth To Order"로 변경합니다. (Set Order와 같은 다른 옵션은 사용하실 수 없습니다.)
이대로 작업을 끝내도 되지만, 이전의 댓글을 통해서 Sorting Order를 스크립트로 제어한다고 하셔서, 이와 같은 역할을 하는 스크립트를 간단히 작성해보았습니다.
(1) 스크립트로 Sorting Group을 사용하려면 "using UnityEngine.Rendering;"을 추가합니다.
(2) 값을 참조하기 위해 apPortrait와 함께 SortingGroup을 public 변수로 선언합니다.
(3) Sorting Order 값을 지정하는 코드입니다. 기존에는 apPortrait의 SetSortingOrder 함수를 사용하셨다면, 이 경우에는 "SortingGroup의 sortingOrder 속성"에 직접 값을 지정해주세요.
완성된 스크립트를 적용해봅시다.
(1) 새로운 GameObject를 추가하고
(2) 스크립트를 추가한 뒤, 각각의 변수에 맞는 객체들을 적절히 할당합니다. (모두 캐릭터에 있는 컴포넌트들입니다.)
이제 게임을 실행하면, Custom Axis (0, 1, 0) 방식에서도 렌더링이 정상적으로 되는 것을 볼 수 있습니다.
AnyPortrait의 버전에 따라 다른 결과가 나온다는 문의였기에 실제로 이 설정에 의한 것인지 의문이 들긴 합니다.
"Transparency Sort Mode"에 의한 것이었다면 AnyPortrait 업데이트와 관련 없이 이전에도 동일하게 문제가 발생했어야 하기 때문입니다.
또는 "Transparency Sort Mode" 설정 문제와 최신 버전의 "Refresh Meshes"의 버그가 혼합되어 하나의 이슈처럼 보여졌을 수 있습니다.
"Transparency Sort Mode" 혹은 이와 동일한 역할을 하는 다른 외부의 에셋이나 설정에 의한 것인지 확인 부탁드립니다.
감사합니다.
많은 도움 감사드립니다.
저도 지금 계속 이것저것 실험해 보고 있었는데,
애니메이션을 모두 처음부터 다시 작업할까 하는 생각까지 하고 있어서
미리 밑작업도 하고 있었습니다...
해당 캐릭터의 프리팹과
해당 프리팹에 연결된 이미지파일을 지금 메일로 보내드리겠습니다.
좋은 결과가 있으면 좋겠습니다.
안녕하세요!
이 이슈에 대해서 AnyPortrait 버전에서의 차이점을 위주로 더 테스트를 진행했습니다.
하지만 렌더링 순서가 완전히 뒤집히는 문제를 재현하지 못하여 원인을 찾을 수는 없었습니다.
시간이 다소 지났지만 좋은 답변을 드리지 못하여 죄송합니다.
테스트를 통해서 찾아낸 몇가지 사실들을 먼저 전달해드리고자 합니다.
일단, Bake 직후에 여러개의 루트 유닛이 겹쳐서 보인다고 알려주셨는데, 이는 정상적이며 버그는 아닙니다. (Bake 후 모든 루트 유닛이 보여지도록 했기 때문입니다.)
문제는 "Refresh Meshes"에 있었습니다.
인스펙터에서 "Refresh Meshes"를 누를때 여러개의 루트 유닛이 있는 경우 버전에 따라 다른 이상한 결과가 나타나는 현상이 존재했습니다.
저희는 v1.2.6과 v1.3.4에서 각각 테스트를 진행했고 아래와 같은 문제를 발견했습니다.
- v1.2.6
: 게임을 실행하고 중지한 뒤 "Refresh Meshes" 버튼을 몇차례 누르면 첫번째가 아닌 다른 루트 유닛들이 안보여지거나 모든 메시가 중앙에 모이는 문제가 있었습니다.
- v1.3.4
: 게임을 실행하지 않은 Bake 직후에도 "Refresh Meshes" 버튼을 몇차례 누르면 두번째 루트 유닛부터의 모든 메시들의 위치가 중앙에 모이는 문제가 발생합니다. 또한 추가적으로 v1.2.6에서의 상황에서도 문제가 동일하게 나타납니다.
이전의 댓글에서 알려주신 것에 해당하는 문제이며 저희가 의도하지 않은 버그가 맞습니다.
다만, 렌더링 순서 문제와는 별개의 현상이었으며, 미리보기 과정에서 메시의 위치가 연산되지 않아서 발생한 문제입니다.
이 현상은 게임 시작 전에 발생하며, 다행히 게임 중에는 발생하지 않는 것으로 확인됩니다.
따라서 게임 중에 이 문제가 발생하지 않는다면 일단 무시하고 작업하셔도 될 것 같습니다.
만약 게임 중에는 문제가 발생하지 않는다면, 이 이슈는 루트 유닛들의 메시들이 이상한 위치에서 겹쳐져서 보여져서 마치 렌더링 순서 문제로 보여진 것은 아닌가 생각해봅니다.
다시 원점으로 돌아와서, Refresh Meshes 문제와 별개로 "게임 실행 중"에 렌더링 순서가 잘못 보여지는 것이라면 이것은 심각한 버그가 맞습니다.
저희는 v1.2.6과 v1.3.4의 차이점에 주목했습니다.
v1.2.6과 v1.3.4의 차이점 중 하나는 Extra Option의 연산에 있었던 버그가 수정되었던 것입니다.
그래서 이 문제가 혹시 "버그가 있었던 이전 버전에 맞게 작업된 결과물이 업데이트 이후 오히려 연산 결과가 바뀐 것"이 아닌가하고 가정하고 테스트를 했습니다.
하지만 일부가 아닌 모든 메시들에 Extra Option을 적용한 경우에만 이 현상이 발생할 수 있으며, 그렇지 않다면 문제 없이 동작했을 것으로 판단됩니다.
또는 에러에 의한 것일 수도 있습니다.
Bake를 실행했을 때 유니티 에디터의 "Console" 탭에서 에러 로그가 발생하는지 확인부탁드립니다.
만약 에러 로그가 없었다면 남은 방법은 저희가 해당 캐릭터 파일을 직접 확인해보는 것 밖에 없을 듯 합니다.
가능하시다면 저희의 메일( contactrainyrizzle@gmail.com )로 "캐릭터 프리팹 파일"과 "캐릭터 이미지 파일"을 보내주신다면, 저희가 확인해보겠습니다.
작업물에 대한 보안은 철저히 지키겠습니다.
여담으로, 이 이슈를 해결하는데 큰 도움이 되지 않을 수 있지만, "Sorting Group"을 이용하면 렌더링 순서 문제를 예방하는데 도움이 되어서 안내를 드립니다.
유니티의 "Sorting Group" 컴포넌트를 apPortrait 캐릭터에 추가하고, apPortrait의 "Sorting Order Option"을 "Depth To Order"로 설정하면 렌더링 순서와 관련된 대부분의 문제를 예방할 수 있습니다.
다음 메뉴얼에서 사용법을 보실 수 있습니다.
https://rainyrizzle.github.io/kr/AdvancedManual/AD_SortingLayer.html
스크립트로 Sorting Order를 변경하고자 할 때는 아래와 같은 코드를 사용하시면 되겠습니다.
앞서 말씀드린 것 처럼, Refresh Meshes 기능의 문제와 별개로 게임 중에도 렌더링 순서 문제가 발생하는지 다시 확인 부탁드립니다.
그리고 문제가 계속되어 저희에게 캐릭터 파일을 보내주시면 검토를 해보겠습니다.
(메일 : contactrainyrizzle@gmail.com )
이 이슈를 신속하게 처리하지 못하여 번거롭게 해드려서 정말 죄송합니다.
문제가 해결될때까지 최선을 다해서 지원하겠습니다.
감사합니다.
오브젝트들의 Z값이 0이었던 터라 1로 다 올려놓고
말씀해주신 것 처럼 카메라를 near 0.3 , far 400 로 설정하였는데
차이는 없고 결과는 똑같았습니다.
도움이 될진 모르겠지만 혹시나 하여
업데이트 전 프로젝트에서 캐릭터를 프리팹화 시키고
업데이트 후 프로젝트에 가져와서 실행해도 결과는 같게 나오고 있습니다.
다른 것도 실험을 계속 해볼테니, 혹시 필요하신 것이 있으면 말씀주세요.
안녕하세요!
저희가 테스트를 해보는 중에 카메라의 설정에 따라서 렌더링 결과가 알려주신 것과 유사하게 이상하게 변하는 문제를 발견했습니다.
카메라의 "Clear Flags"가 "Skybox"인 상태에서 "Clipping Planes"의 속성 중 "Near"의 값이 "꽤 큰 음수"인 경우에 이전 렌더링 결과가 겹쳐져서 보이는 현상이 있었습니다.
Near의 값이 -100인 경우 저희가 테스트중인 Unity 2021와 Unity 2019에서 모두 문제가 발생했습니다.
Near 0.3, Far 1000인 경우엔 문제 없이 출력됩니다.
Near -100, Far 1000인 경우엔 렌더링 화면이 제대로 초기화되지 않습니다. (붉은색만 나와야 하는데 다른 루트 유닛들이 같이 출력되는 상태입니다.)
이것이 렌더링 순서가 완전히 뒤집혀지는 문제의 원인인지는 아직 정확하게 확인되지는 않았습니다.
특히, "이전 버전의 AnyPortrait에서는 정상적으로 나오는 이유"가 되지 않으므로 더 검토를 해봐야 할 것으로 판단됩니다.
그럼에도 일단 카메라의 Near를 작은 양수 (기본값인 0.3)로 설정해보시면 좋을 것 같습니다.
또한 Z-Fighting 문제를 해결하기 위해 Far의 값을 500 정도로 줄여보시고 테스트를 해보시는 것을 권장해드립니다.
캐릭터의 Sorting Order Option의 값을 "Set Order"로 설정하는 경우, 카메라의 Near와 Far의 값의 차이가 500 미만이 되어야 렌더링 순서 문제가 발생하지 않기 때문입니다.
https://rainyrizzle.github.io/kr/AdvancedManual/AD_CameraScene.html
앞서 말씀 드린 것 처럼 카메라 설정 외에도 다른 내부/외부의 여러 원인이 존재할 수 있으므로 저희도 계속해서 검토를 해보겠습니다.
확인해보시고 결과를 댓글로 알려주시면 문제 해결에 도움이 될 것 같습니다.
감사합니다.
올해 마지막 날입니다. 안녕하세요.
질문 답변 드립니다.
위 스크린샷에 Depth to order는 바꿔가며 실험하다 찍힌 스크린샷이고
게임 대기 화면에서 정상적인 스크린샷은 지금은 보이지 않습니다.
코드 수정한것도 없는데 이제는 Portrait 내부가 아니라면
정상적인 모습이 보이질 않습니다.
제가 기본적으로 사용하는 Set Order 기준으로 이 상태에서는
Bake 직후에는 일반적으로 루트유닛이 여럿이라
캐릭터들이 겹쳐보이는 문제가 일어납니다. (왼쪽 사진)
그러고 보니 지난 버전에서는 이 상태에서
Refresh를 누르면 정상적으로 바뀌였는데
현재 상태에서 Refresh를 누르면 괴물이 됩니다... (중간 사진)
하지만 이 상태로 게임 한번 플레이를 하고 종료한 뒤
다시 Refresh를 누르면 조금 오류가 있는 모습으로 바뀝니다. (오른쪽 사진)
그런데 이 상태에서 또 다시 Refresh를 누르면 다시 괴물이 됩니다. (다시 중간사진)
그리고 질문 주신 부분들인데
(1) 캐릭터의 위치에 따라
(나무 등 다른 오브젝트들에 가려져야 하기에)
소팅 오더를 변경해줘야 해서
소팅 오더 옵션은 Set Order로 설정해 놓고
소팅 오더값은 제가 변경해주고 있습니다.
private void FixedUpdate()
{
currentSortingOrder = (int)(transform.position.y * -10);
portrait.SetSortingOrder(currentSortingOrder);
}
하지만 이 기능은 전부터 정상적으로 작동 되고 있던 옵션입니다.
혹시나 해서 '해당 부분을 주석 처리하여 실험 해 봤지만' 결과는 똑같았습니다.
(2) extra option으로 해당 캐릭터의
오른팔, 왼팔 부분만 Depth를 조금 씩 변경 가능하도록 해놨지만
이는 캐릭터가 공격할 때 잠시만 해줬다가 복구시켜놓는거라
캐릭터 모든 부위의 Depth가 오류나는것과는 크게 상관 없을거라 생각됩니다.
- 사용하시는 렌더 파이프라인의 종류 (기본 또는 URP)
-> 기본을 사용하고 있습니다.
- 기본이 아닌 별도의 재질이나 Shader를 사용하시는지 여부
-> 해당 캐릭터는 별도 재질이나 쉐이더를 따로 사용하지 않습니다.
- 여러 캐릭터를 등장시킨다면 다른 캐릭터들도 동일하게 이 문제가 나타나는지 여부
-> 다른캐릭은 아직 없어서 실험을 못해봤네요...
- Extra Option 사용 여부
-> 위에 설명했듯이 왼팔, 오른팔만 설정해뒀습니다.
문제는 모든 부위에서 나고 있습니다.
- 카메라의 Inspector에서의 설정 (특히 Projection 값을 알려주세요)
-> 카메라 Projection은 Orthographic을 사용하고있고
흔들리거나 줌 인아웃 등을 위해 Pro Camera 2D 에셋을 같이 사용하고 있습니다.
(픽셀 퍼펙트 등 그래픽에 영향을 주는 부분들은 사용하고 있지 않습니다)
- Post Processing 이나 Render Texture 사용 여부
-> 사용하고 있지 않습니다.
마침 어제 portrait 버전을 업데이트 하기 직전에 프로젝트를 통째로 압축해놔서
전 업데이트 되기 전 버전(v1.2.6) 프로젝트로 실험을 해봤지만
전 버전에서는 정상적으로 작동이 잘 됩니다.
(어제부터 코드 수정은 없었습니다)
혹시나 예전 버전(1.2.6)에서
최신 버전으로 업데이트 할 시
하던 작업들에 무슨 오류가 날 수 있는것인지요?
또한 망가져 있는 이미지를 자세히 보니,
높은 확률로 지금 depth가 거꾸로 출력 되는 것으로 추측이 되고 있습니다.
순서가 이런 순서여야 하는데,
망가져 있는 이미지에서는
Head가 Hair 앞에 나와있고 (Head가 Hair 뒤에 나와야함)
Clothes가 Head 앞에 나와있고 (Clothes가 Head 뒤에 나와야함)
Leg가 Body 앞에 나와있는 거로 보아 (Leg가 Body 뒤에 나와야함)
거꾸로 출력이 되는 것으로 추측이 됩니다.
정확하게 기억이 안나지만,
올해 초 부분에서 업데이트 했다가
캐릭터가 이상해지는 경우를 겪어서 전 버전으로 돌려서 그냥 썻던 기억도 납니다.
혹시 예전 버전으로 작업하던게 문제일까요?
안녕하세요!
AnyPortrait의 최신 버전에서 Depth 관련한 업데이트는 "Extra Option"에 대한 것 외에는 없어서, 업데이트의 변경 내역에 의한 것인지는 확인이 되지 않습니다.
그래서 문제가 된다면 Extra Option의 렌더링 순서 변경 기능에 의한 것일 수 있으므로, 이 기능을 사용하시는지 확인 부탁드립니다.
https://rainyrizzle.github.io/kr/AdvancedManual/AD_ExtraOption.html
그 외에는, 안타깝게도, 저희가 렌더링 순서를 결정하는 여러 설정들을 변경하면서 테스트해봤지만 문제를 재현할 수 없었습니다.
문의 주신 내용에서 "게임 시작 전에는 괜찮다가 게임 중에 Depth가 이상하다"라고 하셨는데, 혹시 이 점에서 문제의 원인이 있지 않을까 조심스럽게 추측해봅니다.
"Refresh Mesh"의 기능은 게임 중의 결과를 미리 보는 것이어서, 만약 "Refresh Mesh" 혹은 "Bake" 직후에는 문제가 없었다면 이 문제는 설정의 문제가 아니라 게임 중에 실행되는 스크립트나 다른 요소에 의한 것일 가능성이 있습니다.
또한 저희가 가장 의아하게 여기는 부분은, "Depth To Order" 옵션은 렌더링 순서를 결정하는 요소 중 가장 높은 우선순위를 가지므로 대부분의 경우에서는 렌더링 순서 문제가 발생하지 않는다는 것입니다.
혹시 이 옵션이 설정된 상태에서는 다음의 조작을 통해 렌더링 순서를 변경하셨는지 확인부탁드립니다.
(1) 스크립트로 메시의 Sorting Order를 직접 변경하기
(2) Extra Option을 이용하여 메시의 렌더링 순서 변경하기
위의 두가지 사항에 해당하는지 확인해보시고, 문제의 원인이 될만한 요소를 발견하지 못하셨다면 저희에게 다시 연락을 주세요!
이때, 추가로 아래의 사항을 더 알려주신다면 저희가 문제의 원인을 더 빠르게 찾을 수 있을 것 같습니다.
- 사용하시는 렌더 파이프라인의 종류 (기본 또는 URP)
- 기본이 아닌 별도의 재질이나 Shader를 사용하시는지 여부
- 여러 캐릭터를 등장시킨다면 다른 캐릭터들도 동일하게 이 문제가 나타나는지 여부
- Extra Option 사용 여부
- 카메라의 Inspector에서의 설정 (특히 Projection 값을 알려주세요)
- Post Processing 이나 Render Texture 사용 여부
물론 저희는 버그일 가능성도 열어놓고 있습니다.
따라서 문제가 해결되지 않는다면 더 포괄적으로 검토를 해서 원인을 찾아보고자 합니다.
댓글을 달아주시면 최선을 다해 도움을 드리겠습니다.
감사합니다.
빠른 수정 감사합니다.
실험해본 결과 해당 문제는 해결된 것으로 보입니다.
그런데 업데이트 후
어디에 오류가 난 건지 게임 실행을 하면
Depth가 제대로 적용 되지 않는 것 같습니다.
(Portrait 창 , 게임 대기 화면 (Refresh Mesh 적용), 게임 실행 중 화면)
소팅 레이어 옵션들을 바꿔가면서도 실험을 해봤지만
모두 오류가 납니다.
혹시 어느 부분을 건들여줘야 될지 알려주시면 감사하겠습니다.
안녕하세요!
알려주신 상황을 재현해서 테스트해보니 버그가 있음이 확인되었습니다.
최신 버전에서 스크립트에 의한 재질 변경 최적화 과정에서 색상 처리 관련 코드가 잘못 작성된 부분이 있었습니다.
색상만 제어할 때에는 발견되지 않았지만, 텍스쳐를 변경 후 색상 변경 코드가 동작하지 않는 문제가 있었습니다.
버그로 인하여 불편을 드린 점에 대해 사과드립니다.
해당 코드를 급히 수정하여 공유해드립니다.
AnyPortrait v1.3.4가 설치된 환경에서 이 압축파일의 Unitypackage를 설치하시면 apOptMesh.cs가 업데이트될 것입니다.
이 스크립트를 적용해보시고 문제가 해결되지 않는다면 다시 알려주세요!
테스트를 거친 후 이 코드는 다음 업데이트에 반영하겠습니다.
감사합니다.
Eng)
A. We found a bug with color handling, so we share the fixed script file. This fix will be reflected in the next update.
어느부위는 정상 적용되고, 어느부위는 또 정상적용되지 않는 상황이 발생합니다.
(여러 텍스쳐들을 변경시킨 스크린샷, 피격 전, 피격 중, 피격 후)
해당 상황에서 다른 루트유닛으로 이루어진 애니메이션은 정상적으로 작동됩니다
(색이 정상 적용되는 아래 스크린샷)
밤늦게까지 고생하시십니다.
포트레이트 진행되는 마테리얼의 색이 Gray길래
혹시나 해서 Gray Color를 준비해놓고
ResetMeshMaterialToBatch 대신에 Gray Color를 넣어 실험해봤었습니다.
하지만 문제가 하나 생겼는데,
텍스쳐를 변경한 다른옷의 색상이 제대로 원상태로 돌아가질 않습니다.
(왼쪽이 피격 전, 중간이 피격, 오른쪽이 피격 후 사진입니다.)
ResetMeshMaterialToBatch 와 같은 초기화 함수는 재질의 모든 속성을 초기화시키므로, 만약 색상만 초기화하고자 한다면 적절하지 않을 수 있습니다.
따라서 말씀하신 것 처럼 SetMeshColorAll 를 사용하여 직접 기본 색상을 지정하는 것이 가장 좋은 방법입니다.
AnyPortrait의 색상 연산은 2X Multiply를 사용합니다. 따라서 기본 색상이 (0.5, 0.5, 0.5, 1.0)이므로, 이 값을 사용하시면 됩니다.
portrait.SetMeshColorAll(new Color(0.5f, 0.5f, 0.5f, 1.0f));
위와 같이 작성하시면 색상이 기본 상태로 돌아오며, 또한 드로우콜도 최적화되도록 자동으로 인식됩니다.
해당 색상 값은 "Color.gray"와 동일하므로 이것을 사용하는 것도 좋습니다.
추가적으로, 메시나 재질의 색상을 가져오는 방법은 현재 제공되지 않습니다.
따라서 색상은 별도로 변수로 만들어서 관리하시길 바랍니다.
문제가 해결되지 않는다면 댓글을 남겨주세요!
감사합니다.
Eng)
Q. When restoring after changing the color of a material with a script
A. Manually specifying the default color "(0.5, 0.5, 0.5, 1.0)" restores the material's color to its default state.