플레이어가 특정행동을하면 팝업창이 띄워지고
팝업창은 이런 구조(그림)의 팝업창을 만드려고 합니다.
보통이면 Canvas에 속한 UI오브젝트로 만들어서 팝업창을 띄우겠지만
불편한 점이 그림에서처럼 이벤트의 대상 npc가 움직이는 애니메이션을 주려고 합니다.
이 때 문제가 npc들은 왠만해서 기본 애니메이터+애니메이션 클립(스프라이트 프로퍼티)이 다 생성되있는 상태인데(인게임에 등장할거라서),
만약 이걸 캔버스에 UI오브젝트로한다면 애니메이션 클립들을 UI.Image프로퍼티로 된 클립으로 전부 새로 만들어줘야합니다..
등장할 npc종류가 많으면 그만큼 또 손봐줘야하는 부분이 되는데요..
저는 가능하면 그냥 이걸 UI오브젝트가아니라 그냥 인게임 게임오브젝트로 만들어서 이전에 있던 애니메이터와 애니메이션 클립을 재사용 하고 싶은데
이렇게 팝업창을 UI로 안만들고 인게임 게임오브젝트로 만들면 문제가 될게 있을까요? 아니면 이게 비효율적인 행동일까요? 조금 귀찮더라도 UI오브젝트로 만들어서 UI애니메이션클립을 새로만드는게 나을까요? 어떤게 최선의 선택일지가 궁금해서 질문글을 작성하게 되었습니다.
버튼은 인게임 게임 오브젝트로 해도 꼭 UI버튼이 아니여도 따로 스크립트 생성해서 쉽게 만들수 있을거라 생각합니다.
최적화나 나중에 좀 더 추가적인 작업을 할때 효율적이라면 조금 고생하더라도 추가적으로 UI.Image프로퍼티로 할 생각은 있습니다.
이럴때 어떤선택이 좀 더 최선의 선택이 될 수 있을까요?
-세줄요약
UI팝업창에 플레이어 캐릭터나 NPC를 넣고 애니메이션을 실행해야한다면
이걸 새로 UI.Image프로퍼티로 애니메이션 클립을 새로 만드시나요?
아니면 그냥 리소스 재활용할겸 UI가아니라 인게임 게임오브젝트로 그냥 만들어버리나요? 어떤게 최선일까요?
뭔가 쓰고보니 아무리 고생스러워도 UI.Image프로퍼티로 추가적으로 만들고 걍하는게 제일 나을거같은 느낌적인 느낌..
렌더텍스처를 쓰면 간단하게 해결될 거 같은데 어떰?
제가 아직 뉴비라 잘 몰라서 그런데 렌더텍스처를 쓰면 어떻게 해결 될 수 있나요? 렌더 텍스처란 개념도 잘 몰라서 빠르게 GPT에게 물어봣는데 잘 모루겠소요..
렌더텍스처는 런타임으로 업데이트 할 수 있는 텍스처인데 UI RawImage에서 이 텍스처를 렌더링해서 보여줄 수 있음
보통 카메라가 렌더링하는 화면을 텍스처로 만들기 때문에 UI 팝업 뜬 동안 추가 카메라로 NPC를 비춰주면 되는거임
https://docs.unity3d.com/kr/2022.3/Manual/class-RenderTexture.html
참고
말씀 감사합니다 한번 쭉 읽어보겠습니다!
근데 월드 상에 있는 오브젝트를 렌더링한 결과를 옮기는 거라 따로 특수 효과를 넣거나 다른 애니메이션을 표시하려면 또 귀찮음 코드도 지식 없으면 좀 힘들텐데 UI 애니메이션으로 만드는 것도 맞는 방법이긴해 어차피 한번 만들면 거의 수정할 일 없잖아?
너무 노가다에 반감이 없으면해 여러 게임 코드 까보면 대부분 노가다인 코드가 많음
음..그렇군요 GPT한테 클립 추가생성이랑 RawImage와 비교해서 물어봤는데 아무래도 RawImage는 GPU를 쓰기때문에 좀 버거울 수있고 모바일게임이라면 그냥 클립 추가 생성하라고 의견주네요..ㅠㅠ..걍 일단 애니메이션 클립만들어야할듯 싶습니다..모바일게임기반으로 만들고 있어서..ㅠㅠ 그래도 새로운 개념을 배웠기에 감사합니다.
RenderTexture + RawImage 는 생각해본거?
지금 말씀으로 처음듣고 검색해보는중인데 빠르게 훑은것으로 이해한 뜻으로는 이미지를 따로 프로퍼티 정할거없이 관리할수 있게 해주는걸까요?
ㅇㅇ 니가 걱정하는것처럼 UI용으로 변경&리소스를 두배로 불릴 필요없이 UI위에 올릴 인게임 리소스를 보조 카메라로 찍어서 올려주는거임 구성을 한다고하면 인게임 / UI / 랜더택스쳐용 이렇게 3가지의 좌표가 한씬에 존재하는거
https://m.blog.naver.com/dd1587/221162407449
검색만
해봐도 예제같은거 잘나와
감사합니다!! 읽어보겠습니다!! 흑흑..댓글달아주신분들 덕분에 헛짓거리는 안했네요..
아니면 그냥 저기 들어가는 그림을 직접 여러장 그려서 그걸 재생시켜주는걸 넣는것도 방법임
말씀해주신것과 애니메이션클립이랑 다른게 무엇인지 여쭈어봐도 될까요? 현재 제가 쓰는 애니메이션 클립도 프레임 애니메이션이라서용..
코드로 프레임 애니메이션 만들어서 돌리는거지 update에서 png 계속 다음그림으로 바꿔주게 코드에서 하기때문에 그림만있으면 간단함 아니면 도트윈 써도 되고 도트윈이 나을거임 ㅇㅇ
setContents로 메서드 만들어서 넣으면 되는거아니야? - dc App
프리팹1 모달 프리팹2 저 컨텐츠 모달.setContents로 기존 컨텐츠 대신 프리팹2넣고 프리팹2.setImage로 이미지도 따로 설정 - dc App
아니다 질문을 잘못이해했어 제댓글은 그냥 패스하셈 - dc App
팝업 쪽 캔버스 렌더 모드를 월드로 쓰면 렌더 텍스처 안 쓰고 되긴 할텐데 주의사항이 있긴함 월드에서 z축이랑 캔버스 거리 조절해서 ui 위에 월드 객체 띄울 순 있는데 모드 이름 보면 알겠지만 오버레이 캔버스 보다 앞에 있을 수는 없어서 개념상 이 ui가 오버레이보다 위에 있을 수 없다는 게 확실 할 때만 써야됨
지금 타입이름 보니까 오해 할만 한 게 있네 모드중에 월드스페이스 말고 ScreenSpace-Camera 말한 거
근데 2d에 카메라 고정이면 월드스페이스 박아도 될지도?
음 이러면 대신 캔버스가 기존에쓰던 캔버스랑 달리 추가가 하나가 더 되겠네여? 카메라는 움직이긴하는데Z축만빼고 움직입니다.
하나 더 방법이 있긴 한데 코드랑 에디터 다루기 자신 있는 거 아니면 비추 나도 안 해봐서 될진 모르겠는데 애니메이션 클립 클래스 시그니처 보니까 셋커브 있는 거 봐선 코드로 프로퍼티 변경한 클립 생성 될 것 같은데 좀 뒤적 하니까 AnimationUtility 클래스도 있고 찾아보면 누가 만든 유틸 있거나 지피티가 해줄지도 모르겠네
한번 찾아볼만한 말씀인거같네용! 감사합니다!
고양이 귀 움직이는거 왤캐 귀여움 ㅋㅋ