Transform.y > 1 일때 Object.Setactive(true) 하는 함수를
보통 업데이트문에
-----------------------------
private void Update()
{
if(player_tr.position.y>-1)
{
Object.SetActive(true);
}
}
-----------------------------------
식으로 하고있는데
이러면 y가 >-1일때 무한호출되서 솔직히 엄청 비효율적인데
이를 효율적으로 딱 딱 한번씩만 호출되게끔 하는 솔루션이 있을까?
고민을 며칠좀 해봤는데 생각보다 어렵게 다가온다
이것도못하면 걍접는게맞다
그래서 어케함? 이해못하면 접게
그런거 신경쓸정도로 엄청난 성능안잡아먹으니까 그냥쓰셈
Getcomponent나 Find만 안쓰면 성능많이 안잡아먹어서 괜찮다는건가
그냥 일단써서 게임을 만들어. 다만들때쯤 이해도가 올라가있으니까 그때 코드수정해.
지금 거의 완성단계인데 딱 저런식의 형태만 고치질 못하고있음 ㅠㅠ
원래 update문 쓰는거자체가 문제야.
플레이어가 y로갔을때 뭘 비활성화시키는건데?
플레이어가 일정높이(y) 이상가면 Shadow가 켜지고(활성화) 이하로가면 Shadow가 꺼지는(비활성화) 하려고하는중
비활성화 활성화는 크게 성능에 영향없는데 가능하면 업데이트문에서 빼는방법 생각해보면좋을듯함. 점프시에 체크하는거면 점프함수랑 엮어서 그림자체크 함수를 한번실행하도록 하던가.(체크는 코루틴같은걸로)
응애 ㄳㄳㄳ
Object.gameObject.activeSelf 로 오브젝트 활성화 여부 체크해서 해결할수도 있음
근데 한번만 체크는 아님
if(!Object.activeSelf) 하면 되긴하는데 성능이 얼마나 나아지는지는 모르겠네요 - dc App
Object.SetActive(player_tr.position.y > -1f) 로 이동이나 애니메이션 등 입력되고 상태가 바뀌는 부분에 저거 호출되게 해도 되고