묻고 답해요
152만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
deadstate 질문입니다
deadstate에서 에니메이션이 다 재생된후 destroy를 할려면 어떻게 해야할까요따로 함수를 만들어 애니메이션 트리거로 destroy를 하고 있는데 더 나은 방법이 있을까 해서 질문해봅니다
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
현업에서 OdinInpector도 자주 쓰이나요??
OdinInspector를 구매해 둔 김에 사용해보고 싶어서 강의를 따라가며 Editor코딩 부분을 Odin으로 해볼까 싶은데요일단 기본적인 Editor코딩 경험 vs OdinInspector사용 경험둘 중에 어떤 것을 더 추천하시나요??
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
이런 스킬시스템을 저장하는 방법
강의 모두 잘들었습니다. 공부한 내용을 바탕으로 스킬시스템을 넣은 게임을 만드려고 합니다. 추가로 파이어베이스의 리얼타임 데이터베이스까지 사용해서 세이브/로드 기능도 구현하려고 하는데, 이때 Json으로 저장하는 부분에서 어려움을 느끼고 있습니다. 우선 제가 알고있는 수준은 string json = JsonUtility.ToJson(player); 같이 ToJson으로 변환해서 저장하는 정도입니다. 다만 이 방법으로는 int,string,float 같은 기본 자료형만 저장이 가능한데, 이때 Entity가 들고있는 저장해야하는 데이터들. 여기서는 SkillSystem과 Stats도 저장에 포함되어야겠죠 스탯과 스킬이니깐. 이런 것들은 어떤식으로 저장을 구현하는지 마땅히 떠오르지 않습니다..멀티 게임은 아니고 싱글게임에 서버만 입혀주는 정도기 때문에 Player(강의의 Entity)의 다양한 데이터를 저장하는 방법을 알아야 하는데, 이 강의에서 나오는 현재 플레이어가 보유한 스탯,스킬의 정보는 어떤식으로 저장을 해야하나요? 최대한 쉽게.. 알려주시면 정말 너무 감사하겠습니다 ㅠㅠ 어려워요..
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
유니티 2023.1을 쓰는 이유가 따로 있는지 궁금합니다.
최신 버전이라서 쓰는 건가요? 아니면 최신 버전에서 지원하는 기능이 있는 걸까요?강의를 이제 듣기 시작해서 한 번 여쭤봅니다!
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
데이터베이스 생성 Resources 폴더를 써도 될까요?
현재 강의를 듣고나서 이를 바탕으로 저만의 시스템을 만들어보려고 합니다.강의 스킬시스템윈도우 영상에서 AssetDatabase.CreateFolder("Assets/Resources", "Database");와 같이 Resources 폴더를 생성하고 그 안에 SO를 차곡차곡 넣어주는데, 제가 어드레서블을 사용할 예정이라 Resources 폴더를 만들지 않고 필요한 리소스들을 어드레서블을 통해 관리할려고 했습니다.그런데, 이 강의에서 보면 리소스폴더에 SO 파일만 넣어주니깐 용량이 거의 있지도 않은 수준이던데 이렇게 강의처럼 에디터에서 생성한 SO만 들어간다면 리소스폴더를 사용해도 무방할까요? 혹은 애초에 굳이 리소스 폴더가 필요한지도 궁금합니다. 강의에선 특별히 Resources.Load 함수를 사용하지 않더라구요.
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
막힌 부분이 있어 질문드립니다
인디케이터가 원뿔형으로 하였을 때 중앙이 마우스 커서를 향하게 회전하게 할려면 어떻게 해야 하나요??private void RotateTowardsMouse(){Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);mousePosition.z = 0;Vector3 direction = mousePosition - transform.position;float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle));}2d 환경에서 인디케이터 코드에 이 코드를 추가하여 update에서 실시간으로 회전하게 만들었는데문제가 90도 일때는 45도 지점이 마우스 커서 방향을 향하게 되는데180도는 0도 지점270도일때는 135지점에 마우스커서가 향하게 할려했는데 315도 지점에 마우스커서가 향하게 됩니다실제로 탐색하는 부분인 searchArea 코드에서는ector2 requesterPosition = requesterObject.transform.position;Vector2 searchDirection = requesterObject.transform.forward;if (isRotateWithMouse){Vector2 mouseWorldPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);searchDirection = (mouseWorldPosition - requesterPosition).normalized;}// 중략//if (Vector2.Angle(searchDirection, direction) < (angle * 0.5f))targets.Add(entity.gameObject);이렇게 수정하였는데 이쪽은 원하는 범위를 제대로 탐색합니다요약하자면은 실제 탐색범위는 원하는 범위를 탐색을 하는데인디케이터의 범위가 실제 탐색범위와 일치하지 않습니다.제가 실력이 아직 부족하여 문제점을 제대로 해결하지 못해 질문드립니다.
-
해결됨제미니의 개발실무 - 지속 성장 가능한 소프트웨어를 만들어가는 방법
Business Logic!
좋은강의 정말 감사드립니다!말씀하신 비즈니스 로직이 정말 보기에도 좋고 깔끔하다고 생각되서 저도 똑같이 구현해보고 싶다고 생각하는데요외부에서 주입받도록 분리한 로직들은 어느 레이어에 위치시켜야 하는지 궁금합니다. 아직 비즈니스 로직강의만 듣고 질문을 남겨서 혹시 뒷 강의에서 이에 대한 해답이 나온다면 답변해주지 않으셔도 괜찮습니다!감사합니다!
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
적 스킬 관련 질문
진행중인 프로젝트에 강의의 시스템을 수정하며 이용하고 있는 중에 고민거리가 생겨 질문 드립니다. 기존 Projectile에서 Setup해줄 때 Skill 정보를 받아와서 명중시 해당 Skill의 Effect를 작동시켜 데미지 이펙트를 통해 데미지를 주는 방식이잖아요? 근데 원거리 적의 공격을 구현하는 중에 적의 공격도 스킬 방식으로 처리하는 것이 맞을까에 대한 고민이 생겼습니다. 기존 투사체 코드를 이용하려면 스킬을 만들어서 처리하는 것이 맞는데, 적 하나하나마다 스킬을 다 만들어주면 관리하기가 너무 힘들 것 같다는 생각이 들어서 현재는 일단 EnemyProjectile 코드를 따로 파서 카테고리가 다른 엔티티에 명중하면 적(공격자)의 AttackDamage 스탯만큼 데미지를 주는 방식으로 임시로 구현을 해두었습니다. 물론 데미지 이펙트 이외에도 CC기와 같은 다양한 이펙트를 주고 싶으면 기존 스킬 방식으로 처리하는 것이 나아보이긴 하는데요, 이런 경우 강사님은 어떤 식으로 구현하고 계신지 궁금해서 여쭤보고 싶습니다.
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
InvalidOperationException 에러에 대해 궁금한점
영상을 보고 난 후 이런 툴을 제 프로젝트에 적용시켜 혼자 만들어 보고 있었는데이렇게 사용시에 foreach 문에서 InvalidOperationException이 발생 하였습니다. (foreach를 도는 중에는 원소 값을 건드리면 안되어 발생하는 에러)영상 23분에 보면은 x버튼을 눌렀을 때 database에서 원소 값을 remove 시키는데 이 부분에선 발생하지 않던데 이건 무슨 차이 때문에 발생하지 않는건가요?
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
StateMachine 가독성
코드 상에서 일일이 Transition을 만들고 하다 보니 가독성이 딸리는 느낌이더라구요 그래서 그런데 혹시 강의 뒤에 StateMachine의 가독성을 높이기 위한 방법이 나오나요?
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Entity 질문 있습니다.
private Transform GetTransformSocket(Transform root, string socketName) { if (root.name == socketName) return root; foreach(Transform child in root) { var socket = GetTransformSocket(child, socketName); if (socket) return socket; } return null; } 재귀에서 child를 계속 찾는다는게 이해가 가지 않습니다.child는 그냥 변수명 아닌가요?ㅠ
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Subclass Selector Odin inspector 사용 관련
안녕하세요 저는 현재 Odin inspector를 에셋스토어에서 구매하여 쓰고 있습니다. 강의에서 subclassSelector를 odin 내장 기능으로 쓸 수 있다고 하셨는데 어떤 네임스페이스를 써야 사용이 가능한지 여쭤봐도 될까요? 번역기 돌려가며 열심히 찾아보고 매뉴얼 봐도 모르겠네요 ㅠㅠ
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Category[] 직렬화
[SerializeField] 를 통해 IdentifiedObject에서 Category를 직렬화해주고 있는데요.직렬화를 위해서는 다시 Category의 부모인 IdentifiedObject의 직렬화 가능한 멤버변수를 알아야 하는데 그렇다면이론상 재귀 호출이 무한히 일어날 것 같은데 잘 작동이 되는 이유가 궁금합니다.
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Time Sync 문제 관련 질문
Time Sync 문제로 인해 currentApplyCycle를 0으로 초기화 할 것이 아니라 오차 값(영상에서는 0.0012)으로 초기화 해야 된다는 설명 잘 들었습니다! 여기서, currentApplyCycle %= ApplyCycle; 로 초기화를 하는 부분에서, currentApplyCycle 변수의 경우, public float CurrentApplyCycle{ get => currentApplyCycle; set => currentApplyCycle = Mathf.Clamp(value, 0f, ApplyCycle);}위 코드의 Mathf.Clamp 함수로 인해 값이 0 ~ ApplyCycle(0.5) 사이에 머물게 되는데 이러면 0.5012 값이 0.5로 조정되어서 결국에는 0.5 % 0.5가 되어 0이라는 값으로 초기화 되는 게 아닌가 하여 질문합니다!
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
사소한 질문이 있습니다
큰 문제는 아니고 영어로 하면 되긴하는데코드를 그대로 사용하니 게임씬에 뜨는 플레이어 스탯이 한글이면 깨지는 문제가 있습니다.따로 저장되있는 폰트가 있나요?
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Multi Layered State Machine 강의에 대한 질문입니다.
public void Setup(EntityType owner) { stateMachine.Setup(owner); AddStates(); MakeTransitions(); stateMachine.SetupLayers(); stateMachine.onStateChanged += (_, newState, prevState, layer) => onStateChanged?.Invoke(stateMachine, newState, prevState, layer); } MonoStateMachine 스크립트의 해당 부분에서 MonoStateMachine의 onStateChanged 이벤트에 아무것도 등록이 되어있지 않은데 혹시 추후 강의에서 해당 부분 추가 되는 건가요?코드 파악 중 제가 잘못 이해한건지에 대해 궁금하여 질문합니다.
-
해결됨제미니의 개발실무 - 지속 성장 가능한 소프트웨어를 만들어가는 방법
Business Layer 인자 처리
강의 정말 잘 들었습니다! 비즈니스 로직에 대한 관점이 보다 명확해진 것 같아요. 한 가지 궁금한 점이 있습니다. "리팩터링 후의 메서드를 보면 입력받는 인자 targetStore 도 달라진 걸 볼 수 있죠" 와 같은 말씀을 해주셨는데여기서 새롭게 나오게된 개념인 targetStore, usePoint 인자들에 대한 처리가 리팩토링 전과 후 layer들 사이에서 어떻게 바뀌게 되는지 조금 더 자세한 내용이 궁금합니다! 리팩토링 전리팩토링 후 businessPay()메서드에서 pay 라는 비즈니스 로직을 처리하기 위해 요청에 대한 정보를 리팩터링 하기 전의 코드에서는 payRequest 로 presentation layer 에서 전달받고 있는 것 같아요. (저도 이렇게 하고 있었습니다)리팩터링 후의 코드에서는 targetStore, usePoint를 인자로 입력받고 있는걸 볼 수 있었어요. 여기서, 새롭게 나오게된 targetStore, usePoint 객체들을클라이언트로부터 전달되는 presentation layer 에서 바로 전달받는 것을 기대하셨는지아니면 리팩토링 전과 같이 payRequest 로 controller에서 전달 받은 뒤 다른 layer (business 혹은 presentation) 에서 dto 로 변경한 뒤 businessPay() 메서드를 호출하여 인자를 입력해주는 것을 기대하셨는지아니면 다른 방법으로 진행이 되는지 가 궁금합니다!
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
instantiate에 대해서 질문입니다.
제가 알기로는 유니티에서 제공하는 instantiate() 함수는 필드 값도 함께 복사되는 걸로 알고 있었습니다. 그런데 Effect의 Clone() 함수도 Instantiate()를 사용하지만 이 경우에는 필드 값이 같이 복사가 되지 않아서 이유가 궁금해서 질문 드립니다.
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
SkillSystemWindow 스크립트 drawDatabase함수에서 null참조발생
강의자료에 있는 스크립트를 그대로 올려도 오류가 발생합니다.GUI Error: Invalid GUILayout state in SkillSystemWindow view. Verify that all layout Begin/End calls matchUnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)-> DrawDatabase(databaseTypes[toolbarIndex]);부분NullReferenceException: Object reference not set to an instance of an object ->drawdatabase함수의 dataType.BaseType.GetField ~~~ 부분)
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
2강 Database에 리플렉션에 대해 질문입니다.
2강에서 SetID 메소드에서 id필드의 값을 설정하는 부분을 리플렉션을 통해서 구현한 것은 private의 필드의 은닉성을 지키기 위해서의 이유 하나 뿐인가요?
주간 인기글
순위 정보를
불러오고 있어요