안녕하세요. Quest System을 보고 참고하면서 구현을 하다가 확장성과 유연성에 대한 궁금증이 생겨 의견을 물어보고 싶어서 질문드립니다. Quest의 경우 다양한 조건이 있을 수 있는데 예를 들면, 제한 시간 안에 clear를 했는가, 특정 스킬을 사용하지 않았는가, 특정 아이템을 보유하고 있는 상태로 완료했는가 등등 이런 경우에 가능하면 관리하기 쉬우면서 의존성도 낮추는 방향으로 계속 고민해 보고 있는데 어떤 방식으로 구현하는 게 좋을까요?? 해봤을 때 Task 단위로 요구사항이 달라지니 Task에서 event를 연결하는게 직관적이긴한데 너무 하드코딩 방식인 것 같고(하드 코딩이 나쁘다는 것은 아니고 필요하면 해야 겠지만 좀 더 좋은 방법이 있을 것 같아서 일단은 스킵하고 찾아보고 있습니다), Event Hub 같은 기능을 만들어서 관리해보려고도 해봤는데 DynamicInvoke나 object를 쓰게 되서 프레임마다 update하는 경우도 생기는데 성능이 부담되는 것 같습니다..
UserGoodsData클래스와 UserSettingsData클래스에서 사운드, 골드, 젬의 값이 바뀌어도 다시 실행하면 Default값으로 계속 초기화됩니다. UserDataManager의 LoadData함수가 호출되지않는 이유를 잘 모르겠습니다. 추가로 레지스트리 편집기에서 확인해봤을 때, 커스텀메뉴를 통해 젬과 골드를 늘리면 레지스트리값은 변화하지만, 실행하면 초기화되는 상황입니다.
파일 셋팅값이 이상한지 제꺼에서만 그런건지 잘 모르겠습니다만, 저 파일을 집어넣게 되면 sprite 안에 있는 별들중 1개만 찍혀서 나오는 문제가 있어서 여쭤봅니다. 일단 Sprite Editor를 사용해서 크기를 다시 맞추기는 했는데 원래 셋팅값이 이런가요? 원래는 이런상태로 별 한개만 나오더라구요
9주차 소스를 프로젝트로 열어서 보니까 다른 부분이 있네요. 제 프로젝트는 이렇게 뜨는데 9주차 리소스 프로젝트는 이렇게 뜹니다 또한 Tilemap에서 Info가 현 프로젝트는 안뜨지만 리소스 프로젝트로는 Info가 잘 뜨는 것을 확인했습니다 유니티버그 같은데.. 다시 Tilemap 새팅해봐야 될 것 같은데 해결하신 분 있으면 공유부탁드립니다!
에셋스토어 Unity Chan 리뷰에서 셰이더 URP 버전을 올려주셨습니다. 다운로드 링크 - https://drive.google.com/file/d/102hlog1yQRGSCKpEKlYmEbklf0jITr5L/view?usp=drive_link 다운로드하셔서 패키지 파일을 더블 클릭한 후, Import 하시면 됩니다.
코드를 첨부해야 할지 모르겠는데... 유니티 API를 호출한거 뿐이라 우선 그냥 한번 적어봅니다. 그냥 느낌적 느낌? 으로 이런걸 보신 적 있다면... 알려주세요. 없다면 코드를 정리해서 다시 한번 봐야겠네요 1. 안드로이드 빌드에서(apk) 127.0.0.1:8080에 에셋을 놓고 (안드로이드 http 로컬 서버. 외부 환경 문제를 최대한 제거하기 위해) 2. 에셋을 다운로드완료하고 리소스들을 로드합니다. 정상 동작합니다. 껏다 켜도 문제 없습니다. 어드레서블에서 레벨도 additive하게 로드하고 캐릭터도 배경도 막 로드하고 서버에서 몹 생성 받아 잘 생성하고 삭제하고 다 수행합니다. 3. 항상 일어나는건 아니고 잊을만 하면 나오는 일인데 adb 로그만 보면 loadAssetasync()나 InstantiateAsync()를 하는 과정에서 다운로드된 에셋을 읽기? 하는 과정에서 timeout이 일어나고 load에 실패해서? 다운로드한 어드레서블을 지워버리고 새로 127.0.0.1에서 다운로드를 시도 합니다. 역시 실패하구요. 4. 다음 실행시 패치씬에서 이전에 지워버린 에셋을 다시 다운로드 시도합니다. 5. 익셉션 발생하고 그냥 재실행 시킵니다. 또 다른 에셋을 받기 시도합니다. 6. 잘 됩니다. 정상이네요. 혹시 어드레서블 관련 함수를 사용하는 중 "에셋 로드 시도 실패 후 에셋을 지우고 다시 다운로드 하려는 증상"에 대해서 보신적 있으신가요? 문제를 줄이기 위해 수행한 로컬서버가 문제를 일으켰나 싶기도하고 애초에 이미 로컬에 다운로드를 끝내고 넘어가서 어드레서블 파일을 loadAsset을 수행하는데 또 서버를 연결시도 하는 것도 이상하고... 동시에 너무 많은 어드레서블 에셋을 로드하지 말라는 말도 있긴 했는데 이런쪽 문제인가 싶기도 하고... (억지로 로드 시간을 좀 길게 잡아서 상상을 해본다면 정적 씬1XXmb , 플레이어 캐릭터 타입1 2 3 각각 80mb, npc들 100mb, 몬스터 묶음 A B 80 80mb 해서 동시에 6개의 어드레서블 로드가 진행 될 수는 있습니다. ) 어드레서블 옵션에서 재시도 시간, 재시도 횟수를 늘려놓긴 했습니다만 매번 일어나는건 아니라서 딴 작업하다보면 나오는 식이라... 이런걸 보신 적 있으신가요
안녕하세요. https://inf.run/JcuJM 위에 분과 같이 Spider 사망 시 바로 폭발, Wait for Seconds 후 폭발 이렇게 두 번 동작합니다. Log를 찍어보면 총 2번이 호출되는 것이 확인되는데, 위 작성자 분 말처럼 Destroy Self 다음에 Wait for Seconds(대략 0.05s 이상)를 추가하면 1번만 폭발합니다. 마지막 Wait for Seconds 제거 시 Dead1, Dead2 모두 2번씩 호출됨 총알과 Spider에 각각 콜라이더가 1개씩 있는 것은 확인했습니다. Spider의 Box Collider는 아래로 내리거나 제거해도 동일합니다. Wait for Seconds에 약 0.05s 이상을 추가하면 해결이 됩니다. Destory 부분이 바로 진행되지 않고 실제 파괴되는 시간보다 로직이 도는 시간이 더 빠르다보니 한번 더 실행되는 것일까요? 스크립트, 콜라이더 등 강의를 돌려보고 비교해봐도 빠진 부분은 없었습니다.
안녕하세요. 위와 같이 정상적으로 Event Channel를 만들고, Scriptable Object도 생성 후 연결한 상황입니다. 그런데, PlayerController에서 Event를 연결시켜야 하는데, Event가 없습니다. 지우고 다시 해봐도 Event가 나타나지 않는데, 혹시 제가 잘못한 부분이 있을까요?
실습 환경 : Mac OS M2 Pro 유니티 자체가 처음이어서 질문이 방향을 벗어날 수도 있다는 점 양해 부탁드립니다. 강의에서 실습을 따라하다 보면 다른 설정들은 전부 동일하게 UI가 세팅이 되는데, Canvas 내에 들어가는 Item들은 전부 강의에서보다 제 환경에서 크기나 좌표들이 작게 세팅됩니다. (예를 들면, 강의에서는 Pos X를 350으로 두었을 때 거의 오른쪽 끝에 도달하는데 제 화면에서는 오른쪽 중앙 정도에 위치하거나, Item들을 같은 사이즈로 세팅해도 폰트나 이미지 크기가 강의에서보다 작게 세팅됩니다.) 이렇게 되는 이유가 있는 걸까요? 강의랑 동일하게 재현하기 위한 설정이 따로 존재하는지도 궁금합니다. 감사합니다.
실습 환경 : Mac OS M2 Pro 유니티 자체가 처음이어서 질문이 방향을 벗어날 수도 있다는 점 양해 부탁드립니다. 유니티에서 프로젝트를 생성한 뒤 Input 관련 코드를 작성하면 항상 아래와 같이 뜨는데요, InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings. 구글링해 보니 Edit > Project Settings > Player의 Active Input Handling을 Both로 변경하면 해결된다고 하여 그렇게 세팅한 뒤 해결했습니다. 다만 여기서 궁금한 점이 두 가지가 있는데요, 해당 설정의 Default 값은 Input System Package (New) 인데 이게 Default인 이유가 있을 것 같은데 오류가 발생하는 걸 보면, 강의에서는 Input Manager (Old) 와 관련된 Input들로 진행이 된 걸까요? 만약 그렇다면 그렇게 진행한 이유가 궁금합니다. 강의에서는 해당 오류가 발생하지 않은 걸 보면 기본 세팅 자체가 다른 게 아닌가 추측되는데, 기본적으로 해당 속성을 Both로 설정하신 건가요? 만약 그렇다면 저의 경우는 프로젝트가 생성될 때마다 해당 설정을 변경해줘야 했는데 어떻게 가능한 건지 방법이 궁금합니다. 감사합니다.
안녕하세요. Damage를 입는 대상에 대해서 IDamagable 인터페이스를 적용하는 부분은 알겠습니다. 다만, 지금과 같이 Barrel에 적용하였을 경우, Raycast의 설정된 거리 문제로 실제 화면에서는 barrel에 총알이 부딪히는 효과가 나타나지만 터지지 않는 문제가 발생할 수 있을 것 같은데, 단순히 거리를 늘려서 해결하는 것이 맞을지 아니면 다른 방법이 있을지 궁금합니다. Raycast를 추가하지 않고 해결하려면 Raycast에서 거리 증가 총알이 Raycast 감지 영역을 벗어났을 때 Relase 이렇게 밖에 떠오르지 않아서요.