히어로스 차지 처럼 스킬 사용할때, 맵과 스킬 사용하지 않는 유닛들의 color 값을 어둡게 해주어야했음
1)문제점
해당 기능이 동작할때마다 material이 증가한다는것.
원인&해결
renderer.material을 사용하기 때문인데,
1) 이렇게 새로 생성된 material을 삭제 하고
2) 원래의 color로 돌려 놔야함.
1)은 해당 material을 DestroyImmediate() 하면됨.
2)를 어떻게 할것인가? 즉 원래의 sharedMaterial을 사용하게끔 어떻게 해주는가?
요렇게 하면됨
2)문제점
material을 생성해서 할당할 필요가 있어서(*1) 그렇게 했더니 material 개수가 계속 증가.
원인&해결
temp material을 render에 할당할때, 복사가 일어나는 것 같음
해결 ) temp material을 따로 또 삭제해주면됨
(*1) : 이후에 문제 상황이 있어서 이 페이지 볼일이 있었는데, 요것이 기억이 안남 ;;;
살펴보니 1)문제점의 방식을 사용해서 sharedMaterial 로 돌렸을때, material이 날아가 버리는 현상이 나타났음. 이 현상을 해결하려고 material을 새로 생성했던거 같음. 날아가버리는 원인은 이미 color change전에 sharedMaterials가 복사된 넘으로 들어가 있고, materials도 같은 넘으로 세팅되어있어서, rollback에서 materials destroy할때, sharedMaterials도 날아가 버렸던거였음.
->[2015.3.19 추가] sharedMaterials가 Instantiated material로 세팅되어있는 것이 코딩상의 버그일거라 생각했는데, 테스트해보니 material을 사용하면 해당material이 새로 생성됨과 동시에 sharedMaterial에 생성된 놈으로 설정해주고 있음. 그래서 이미 sharedMaterial이 instantiated 된 걸로 세팅되어있는 상태에서 backup하고 color change하고 rollback하면, matrials를 삭제할때 sharedMaterials것도 삭제되고 backup된것도 날아가버리는 거였음
3)문제점
테스트 프로그램에서 _temp_material_array를 renderer.material destory 할때 같이 하는 것에서,
실제로는 renderer.material에 할당후에 바로 destroy 해주는 것으로 했더니 화면에서 material이 아에 없음...
원인&해결
renderer.materials 에 할당할때 실제 복사는 나중에 이루어 지는듯.
test proprogram처럼 temp_material을 저장해 두었다가 renderer.materials destroy할때 같이 했더니 잘됨
댓글 없음:
댓글 쓰기