-
[일반] 유니티 GetComponent질문좀...2019.10.20 PM 09:17
if (target != null)
{
if (target.tag == BC || target.tag == PC)
{
///타겟이 챔피언이면 Champion_Manager클래스의 체력을 관측한다.
Champion_Manager targetCM = target.GetComponent
targetHP = targetCM.Current_HP;
}
else if (target.tag != BC || target.tag != PC)
{
///타겟이 챔피언이 아니면 ObjectHP_EXP_Ctrl의 체력을 관측한다.
ObjectHP_EXP_Ctrl objectHP = target.GetComponent
targetHP = objectHP.HP;
}
}
타겟으로 지정한놈의 체력을 타겟에게 붙어있는 스크립트에 접근해서 가져와야 하는데...
문제는 GetComponent는 update나 coroutine에서 사용하면 성능에 많이 안좋은걸로 알아서요 이걸 어떻게 해야할지
타겟은 실시간으로 바뀔수도 있구요
그래서 타겟이 바뀌었는지 그대로인지만 파악하면 될거 같은데 어떻게 비교를 해야할까요
변수가 바뀌엇는지 감지하는 api가 있을까요?
- 아여름은너무덥다
- 2019/10/20 PM 09:29
개발하면서 저는 큰 문제 안일으켰었는데...
혹시나 나중에 문제 되면 인터페이스 선언해서 공통으로 선언해서 스크립트를 일관전으로 정리하면되지않을까싶어요
- 돼지 저금통
- 2019/10/20 PM 09:40
- non-oan
- 2019/10/20 PM 09:34
- 루리웹-2672327379
- 2019/10/20 PM 09:35
근데 겟컴포 뿐만아니라 , 게임로직에서는 부하가 큰 작업은 최대한 줄이든가 최적화를 하는게
기본입니다.
그래서 플레그나 캐쉬를 해놓는게 무난한 처리죠.
기존 타겟을 저장하고 있다가 ,
업데이트 루틴때 이전 프레임과 같은 타겟이면
겟컴포넌트 할필요 없이 , 그냥 체력값만 가져오면 대겠죠.
- 흠냐흠흠
- 2019/10/20 PM 09:36
- oxmhpark
- 2019/10/20 PM 10:08
1. 아마도 게임 매니저 싱글톤을 두고 계실텐데, 거기에 public static Dictionary<GameObject, HPContainer> Buffer; 를 마련해두시고, 각 HPContainer 개체들이 생성되거나 파괴될 때 스스로를 추가/삭제하도록 합니다.
2. 게임 매니저에서 taget 게임오브젝트로 해당 HPContainer을 얻어낼 수 있습니다.
- 風影
- 2019/10/20 PM 10:33
본문의 코드만 보자면 ObjectHP_EXP_Ctrl 과 Champion_Manager 를 분기하고 있는데 이것도 공통된 부모 클래스를 하나 둬서 target을 픽할때 공통으로 사용하는 부모 클래스로 받아오면 위 부분에 한해서는 tag도 체크할 필요없이 target.HP 같은식으로 접근 가능할 것 같은데요.
user error : Error. B.