안녕하세요 개발을 하고 있습니다.
현재 저에게는 굉장히 큰 문제에 봉착했다고 할수있겠네요.
게임시작 시 Disable 상태인 오브젝트의 컴포넌트에서 값을 초기화 하고 싶어서
이런식으로 접근을해보았습니다.
근데 생각해보니 인터페이스 형식은 직렬화가안되어서 인스펙터에서 원소를 추가를 못하네요
Disable 상태인 오브젝트의 컴포넌트에서 값을 초기화하는 기똥찬 아이디어를 가지신분 있으신가요?
안녕하세요 개발을 하고 있습니다.
현재 저에게는 굉장히 큰 문제에 봉착했다고 할수있겠네요.
게임시작 시 Disable 상태인 오브젝트의 컴포넌트에서 값을 초기화 하고 싶어서
이런식으로 접근을해보았습니다.
근데 생각해보니 인터페이스 형식은 직렬화가안되어서 인스펙터에서 원소를 추가를 못하네요
Disable 상태인 오브젝트의 컴포넌트에서 값을 초기화하는 기똥찬 아이디어를 가지신분 있으신가요?
음.. 활성화될 때 초기화하면 안 되는 거임?
비활성화 된 상태에서 이벤트로 호출시켜서 오브젝트를 활성화 시킬려고 합니다...
그럼 이벤트로 GetPool 호출하도록 만들면 되지 않슴?
오브젝트 풀링안에 있는 친구가 아니라서 getPool로 호출해서 못받아올것 같습니다...
그렇다면.. 싹 다 비활성화하지 않고 메쉬렌더러, 콜라이더 같은 걸 부분적으로 비활성화하는 건 어떰;;
그래서 렌더러를 끄고 하는 방향으로 다시 잡아볼려고 합니다. 의견 감사합니다
유니티야? 디세이블된 오브젝트에 달린 스크립트 참조는 되도 작동은 안하는걸로 알고있음;
스타트에서 실행하고 끝나면 오브젝트를 꺼버리는 식으로 하는 것 말고 생각이 안남 ㅋ ㅋㅋ ㅋㅋ
흠.. 정말 그 방법밖에 없나....
헐.. 파딱 어떻게 된 거야
List[GameObject]로 오브젝트 넣어주고 GetComponent[IInitailize]()로 받아와서 실행되나
실행은 되는데 별로 추천하지는 않는 방법입니다. 왜냐하면 해당 오브젝트의 컴포넌트를 검색해서 받아오는것이기 때문에 반복적으로 호출하면 성능면에서 좋지가 않습니다...
초기화를 반복적으로 하겠다는거임? 오브젝트가 몇개고 빈도는 얼마길래?
반복적으로 하는건 아니고요... 뭔가 자존심의 문제입니다...
겨우 한번 실행하는거면 성능 걱정 할 필요 없다 총알 - 적 간의 데미지를 주고받기만 해도 GetComponent쓰면서 총알 수 백개씩 깔리는 게임이 널렸는데
댓글보니까 걍 이대로 해도 될것같기도 하고.... 좋은 의견 감사합니다.
뭐 사정은 모르겠지만 렌더러만 끄던지 아무튼 비활성화를 setactive 말고 다른쪽으로 설계하는게 나을거 같음
ondisable 에서 값 다 초기화 해줘도 되지않나 싶지만
렌더러만 끄는 방향으로 설계를 다시 잡아서 해야겠습니다. 좋은 의견 감사합니다
나는 화면 밖으로 보내서 안보이게한 다음에 초기화한후에 disable했음 ㅋㅋㅋㅋㅋㅋㅋ
오 그것도 좋은 방법인것같은데요 ㅋㅋㅋㅋㅋ
유즈맵같은거 만들때 자주 쓰는 꼼수인데 이것도 괜찮지ㅋㅋ 걍 유저눈에 안보이면 파괴한거나 진배없
disable 이어도 awake는 호출 될 건데?
지금대로면 유니티 인스펙터에서 list에 넣을 수 있어야하니까 abstract class ClassName : MonoBahvaiour 쓰는 게 나을 듯