2022년 1월 22일 토요일

[Cocos Creator] Scene과 Prefab의 구조

현재 사용하는 Cocos Creator 버전은 2.4.5고 2.4.7도 동일 했던 것으로 보임


코코스를 이해하려면 씬과 프리팹의 구조를 이해하는 것이 좋을 것으로 보임


a라는 씬(fire)가 있고 b,c,d라는 프리팹이 있다고 보자


a->b->c->d


자 a라는 씬에 b가 있다. 저장을 한다


a의 b의 내용과 실제 b의 내용은 다름


유니티도 다르지 않나???


그렇지 않음. 왜 그런가?

Cocos Creator에서는 해당 프리팹의 내용이 그대로 씬에 저장이 됨.


그게 뭔데?

그니까 b라는 프리팹에 내용이 1,2,3이라면 a 씬에 b프리팹으로 되어 있는 부분에 4,5,6이라도 된다는 거임

이게 무슨 차이가 있냐면 유니티에서는 프리팹을 씬에 넣을때 프리팹의 구조를 바꿀수는 없음.구조가 그대로인데 그 안의 내용은 바꿀 수 있찌만 구조를 바꾸면 프리팹을 깰거냐고 물어보는 것을 알수 있음


그래서 이런 부분이 Cocos Creator가 좋은 부분도 있을 수 있다 라고 생각을 할 수도 있지만 보통의 경우 지옥도가 열림, 왜? 우리는 보통 협업을 하니까


예를 들어서

1. 디자이너가 프리팹을 배포함

2. 개발자가 씬에 프리팹을 넣음

3. 디자이너가 프리팹의 구조를 수정하고 커밋

4. 개발자가 업데이트 받고 "수정 안 되었는데요?" 물어봄


단순하게 씬에 프리팹 내용이 그대로 들어가 있고 프리팹이 변한것이 반영되지 않아서임


이건 프리팹도 마찬가지라서 프리팹 안에 프리팹도 같은 구조임


그냥 이 프리팹에 다른 프리팹이 포함되어 있음.

그냥 어떤 노드에 다른 프리팹이었다는 사실을 알려주는 것임


그래서 프리팹 옵션에 Go Back(원래 프리팹 내용으로 바꿈) Save가 있는 것임


근데 이게 유니티의 구조와도 다르지만 뭔 수정이 생길때마다 Go Back을 해줘야 하는 상황이벌어 지기 때문에 상당히 피곤하다는 것을 알 수 있음


우리도 이런 문제에 엄청 피곤했고 이후에는 그냥 프리팹 연결하는 구조로 변경했음


--------------------------------


svn 설정으로 문제를 해결했습니다. [바로가기]

댓글 없음:

댓글 쓰기

C# Async/Await Task 속도가 느릴 때 (TaskCompletionSource)

고전적인 개발 방법으로는 작업이 끝났는지 확인하기 위해서 작업 내용을 확인하는 루프를 만들어서 확인을 하는데 나는 이걸 mysql 풀링에 사용했었다. 그러니까 지금 사용 가능한 mysql 연결이 있는지를 task 에서 루프 돌면서 확인하는 방식으로 만...