25%
66,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
GameScene에서 인스턴스화 할때 애니메이션 재생 에러 관련 질문 드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. c++ 서버 수업 듣고 재밌어서 그만 유니티까지 들으러 와버렸습니다ㅎㅎ.. 질문드릴 게 생겼는데, 이틀동안 여러가지 검색어로도 찾아보고, 혼자서 머리도 굴려봤는데, 답을 찾기가 쉽지 않아서 질문드립니다. Prefabs/knight를 선택해서 드래그로 하이라키로 미리 올려놓은 프리펩은 아무런 문제 없이 애니메이션이 재생되지만, 코드 상에서 Spawn시킨 프리펩들은 인게임 화면에서는 애니메이션이 재생되지 않는 문제입니다. 이게 혹시 초기화할 때 애니메이션 클립이 제대로 세팅되지 않은건가 하고 디버그로 클립을 확인해봐도 제대로 등록이 되어있고, Animator 상에서도 ScanRange에 들어가면 RUN 클립이 제대로 재생되는 것 까지 확인했는데, 정작 인게임 화면에서 애니메이션이 재생되는 게 아니라 아무것도 안 하고 있는 상태로 그냥 speed*_deltaTime 속도로 순간이동 해옵니다.(ATTACK 아무 모션 없이 HP만 감소시킴) 한편, 런타임 중에 그냥 프리펩을 드래그해서 생성시킨 오브젝트 역시 애니메이션이 먹통이 되버립니다. 이 부분에서 저는 '하이라키에 미리 올려둔 프리펩을 제외한 모든 프리펩들, 즉 런타임에 생성한 오브젝트들은 싹 다 먹통이다' 라는 뇌피셜로 검색을 더 해봐서 결국 임시 해결책을 찾긴 했습니다. 바로 animator 컴포넌트를 체크 해제후 다시 체크하는 방법이 유효했습니다. 이 방법대로 Spawn으로 생성시킨 프리펩에 대해서, 플레이어를 락온 하지 않은 상황에서 Animator 컴포넌트를 직접 손으로 체크해제 했다가 다시 체크를 하면 애니메이션이 정상적으로 작동합니다. (락온한 상황에서는 Animator 컴포넌트를 조작해봤자 정상적으로 애니메이션이 작동하지 않습니다) 이를 자동화 하기 위해서 Spawn함수에서 _monsters.Add(go) 이후 go.GetComponent<Animator>를 anim으로 해주고, anim.enabled = false; anim.enabled = true; 로 추가해주니 잘 작동하는데, 이 방법이 깔끔하다고 생각되지는 않네요...ㅠ 이게 해결 방법이야 어찌됐든 억지로 찾아냈지만, 원인 파악이 도저히 안 됩니다. 코드 상의 문제였다면 하이라키에 미리 올려놓은 프리펩만 정상적으로 작동하는 것이 기이하기 때문에 코드 상의 문제는 아닌 것 같고 아무리 봐도 유니티 엔진 자체 초기화 과정 문제이거나 유니티 애니메이션 시스템에 대한 이해부족이 원인인 것 같긴 한데, 이거야 제 뇌피셜일 뿐이고 혹시 비슷한 상황이 있으셨는지 질문드립니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Awake()와 Start()에 대해 문득 생각하니 궁금한 게 생겼습니다.
Awake()와 Start()함수 둘 다 초기화 과정으로 오브젝트가 활성화 할 때 딱 한번 씩 호출하는 함수인 걸로 알고 있는데 그렇다면 왜 초기화 과정에서 Awake와 Start 함수 두 종류가 있는지 왜 Awake를 Start보다 먼저 호출해야 하는지 궁금합니다....
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
static 질문드리겠습니다!
MonoBehaviour를 상속받은 클래스안에 static 변수를 선언하고 이 C# 스크립트가 현재 유니티 프로젝트 에셋 폴더안에 있으면 씬이나 게임 오브젝트에 이 스크립트를 컴포넌트로 붙이지 않아도 Static 변수는 정적으로 할당되는건가요? 그렇기 때문에 static Managers s_Instance; static Managers Instance { get { Init(); return s_Instance; } } 여기에 브레이크 포인트 걸어 놓으면 바로 걸리는거 맞나요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
싱글톤 패턴 관련 질문드립니다
직접 만든 게임을 모바일에서 출시해보고 싶어 유니티 공부를 시작했는데 서적이나 유튜브 강의를 보다보면 거의 싱글톤 패턴을 사용하며 권장하고 있습니다. 여러 커뮤니티에서 싱글톤패턴은 사용하면 안좋은점이 많고 사용하지 말아야 할 문제점 처럼 이야기 하는것을 보게되었는데실질적으로 사용을 피해야하는 안좋은 코딩 방법인지, 사용한다면 개발하는데 제한이 있는 장르가 생기는지 궁금합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
PullManager의 Push 함수에서 그냥 Destroy를 하는 이유는 뭔가요?
PoolManager의 Push 함수에서 거의 일어날 일은 없지만 만약 pool Dictionary에 push 하고자 하는 객체가 없다면 그냥 해당 객체를 Destroy 하던데 다른 경우에는 CreatePool로 따로 처리를 하던걸 Push에선 Destroy로 처리하는 이유가 혹시 있나요? 해당 일이 일어나는 경우가 툴로 직접 오브젝트를 생성하면 일어날수 있다고 말씀하셨는데 그렇게 생성된 오브젝트는 스크립트로 관리하기 힘들어서 그냥 삭제를 해주는건가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UnassignedReferenceException에 대해 문의드립니다.
UnassignedReferenceException: The variable _player of CameraController has not been assigned. You probably need to assign the _player variable of the CameraController script in the inspector. CameraController.LateUpdate () (at Assets/Scripts/Controllers/CameraController.cs:29) 위 오류가 뜨면서 실행하면 카메라가 플레이어를 따라가지 않습니다. 올린 파일을 그대로 사용해도 여전히 오류가 생기네요. 유니티와 비주얼 스튜디오 버전은 최신버전입니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Monster의 OnhitEvent가 2번씩 실행되는거같아요....
Player의 경우 이상없이 한대 때릴때마다 Monster의 체력이 5씩 깎이는데, Monster의 경우 한대 칠때마다 10씩 체력이 깎이더라구요... 디버깅을 했을때, attack과 defense 모두 정상적으로 불러오길래 defense를 6으로 올려보니 8의 데미지가 들어옵니다. 즉, Onhitevent가 2번씩 실행되서 한번에 모션에 2번씩 실행되는걸로 추정이되는데.. 이유가뭘까요..? 강의를 돌려보고 코드를 체크해봐도 문제가 없어보이는데 해결이 안됩니다 ㅜㅠ
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
BaseScene에서 왜 Init함수는 abstract로 만들지 않나요
Clear같은 경우 abstract로 만들어 자식클래스가 Clear를 반드시 정의하게 만들었는대 Init은 자식클래스가 반드시 갖고 있을 필요가 없기때문인가요? 그럼 왜 갖고 있을 필요가 없을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Invoke 질문
public void IPointerClickHandler(PointerEventData eventData) { if (OnClickHandler != null) OnClickHandler.Invoke(eventData); } 이부분에서 INVoke가 하는 역할이 무엇인가요? 구글링을 해보아도 개념과 잘 연결이 안되서 잘 이해가 가질 않습니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
SetCursor시 렉 생기는 현상 질문있습니다.
안녕하세요! 강의 정말 잘 듣고 있습니다. 하다가 이상한 점이 있는 것 같아서 질문드려요. 커서를 HAND모양과 ATTACK모양으로 바꾸는 것을 테스트해보고 있었습니다. 그런데 게임을 처음 실행하고 몬스터에 커서를 옮겨보면 Hand texture -> Attack texture로 될 시 딱 한번 렉이 걸린다음 바뀌고, 다음 부터는 커서가 바껴도 렉이 안걸리더라고요. 이 코드에서 Cursor.SetCursor(_attackIcon, ...) 부분을 빼고 게임을 실행해보니 렉이 안걸리는걸 보니까 SetCursor부분이 문제인것 같습니다. hand -> attack으로 바꾸면 처음에 렉이 걸렸다가 다음 부터는 이게 내부적으로 계산이 끝나서 그런건지 hand-> attack -> hand -> attack 반복해도 렉이 안걸리더라고요. 렉이 걸리는게 제 컴퓨터에서만 이러는 건지.. 유니티가 버전이 업그레이드 되면서 이런 버그가 발생한 건지 잘 모르겠지만 혹시 이유를 아실까봐 질문드립니다. (참고로 제 유니티 버전은 2020.3.17f1로 하고 있었습니다!)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Bind 개념질문
저희가 원래 PointButton에 있는OnClick() 함수를 사용하기위해서 On Click() 부분에 드래그로 UI_Button을 옮겨주었고 함수도 BI_ButtonClicked()라는 녀석을 만들어서 연결시켜주었는데 프로젝트가 커지거나하면 관리가 힘들어서 드래그 드롭으로 ON Click에 연결시켜주었던부분을 코드로 관리하기위해서 Bind함수를 만들어서 On Click()에 연결(바인드)해주는 작업을 코드로 구현한거ㅏ 까지는 이해가 됩니다. 그런데 저는 지금 Bind가 어떻게 동작하는지는 100%까지는 아니지만 인자를 이렇게 넘겨주고 넘겨줬던 인자가 얘를 의미하고 위에서 선언했던 Dictionary형태에서 값을 가져오고 이런부분은 조금이해가 되는데 UI_Base에서 Bind를 쓴다고해서 어떻게 이것이 무엇이랑Bind된다는 건지 잘 모르겠습니다. 툴로 구현하려는 부분(드래그 드롭해서)객체를 연결해서 함수를 연결해주는 부분이 Bind함수에서는 On Click에 연결해주는 부분이 안보이는데 (제가봤을때는) 이부분이 Bind함수의 어느부분에 구현이 되어있는건가요..?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
여기까지 강의 보면서 느끼는건 ..
사실 강의 내용이 초보자용은 아니고 그렇다고 중급자 용이라기엔 내용이 많이 어렵네요 제가 이 강의 들으면서 이해 안가는 내용이 많아 내용 이해하려고 많이 돌고 있는대 강의 내용 하나 하나 이해하기 시작하면서 결국은 .. 진짜 제가 경험이 많이 부족하다는걸 느낍니다 .. 그래도 감사한 점은 다양한 패턴과 기법들을 알기 쉽게 설명해주셔서 너무 고맙습니다. 마지막까지 열심히 달려볼게요
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
CrossFade로 변경 이후 에러가 있습니다.
파라미터를 이용할 때에는 발생하지 않던 문제인데.. 강의 내용에 따라 애니메이션을 CrossFade로 재생한 이후부터 오류가 있습니다. 항상 그러는 건 아니고, 간헐적으로 마우스를 누르고 있을때, RUN모션이 재생이 되지 않습니다.. 애니메이터를 켜봐도 재생이 되지않고, 이동은 되는데 공중부양을 하는 것처럼 모션없이 캐릭터만 이동합니다. 항상 안되면 문제를 찾기 수월할텐데.. 될때도 있고 안될때도 있어서 혼란스럽네요 ㅠ Debug.Log를 찍어봐도 함수 안까지는 잘 들어오는게 맞는데 왜 애니메이션만 재생이 안될까요..?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UIEventHandler > OnDrag 관련 질문입니다.
강의 너무 좋습니다. 감사합니다. 프레임워크 개념을 잡는데 너무 도움이 되었습니다.!! 잘 않되는 부분이 있어서 어떻게 해결해야 되는지 삽질중입니다.... 해당 UIEventHandler 을 Bind해서 아이템별 => Click 이벤트는 잘 되는데.. 아이템 부모 오프젝트에 Scroll Rect를 적용 -> 스크롤 안됨 아마도 UIEventHandler : IDragHandler 인터페이스 적용한것 때문인것 같은데... 어떤 경우는 아이템에 드레그도 필요한데.. Scroll Rect와 같이 병행해서 처리 할 수 (UIEventHandler) 를 만들수 있는 방법은 없을까요? 감사합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
프레임워크가 무엇인가요?
0:11이랑 0:27에서 프레임워크를 완성했다고 하셨는데 프레임워크가 무엇인가요?? 검색을 해봐도 이해가 잘 안돼서 질문드립니다
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Utill.cs 에서 foreach 문제생겨서 질문드립니다!
foreach(T component in go.GetComponentInChildren<T>()) { } 부분에서 go.GetComponentInChildern<T> 의경우 T형식 변수에서 foreach 문을 수행할수없습니다. 'T'에는 GetEnumerator의 공개 인스턴스 또는 확장 정의가 없기 때문입니다. 오류가 나서 질문드립니다. 혹시 제가 어디서 인스턴스를 빼먹은걸까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
하나의 코루틴 함수를 여러 함수에서 동시에 호출할 경우 질문있습니다.
질문 내용 그대로 하나의 공용 코루틴을 여러 함수에서 사용하려할때 공용 코루틴을 독립적으로 사용하게끔 하는 방법이 있는지 궁금합니다. 예를들어 더블슬래쉬, 차지라는 스킬이 있고 각 함수의 끝에서 쿨타임을 체크해 해당 시간동안 스킬재사용을 막아주는 공용코루틴 함수를 호출한다고 할 때 테스트 결과 각 스킬이 공용코루틴 함수의 데이터를 공유한다는 문제점이 발생했습니다. ->기존 스킬의 쿨타임이 뒤의 스킬의 쿨타임으로 초기화 해결방법으로 생각한게 1. 스킬마다 쿨타임을 계산하는 코루틴 함수를 각각 생성.->매우 비효율적이라 판단, 하지만 확실한 해결방법 2. 쿨타임과 관련된 작업을 공용코루틴으로 만들고 스킬 데이터를 파라미터로 받아 다르게 처리. -> 각 스킬이 이미 사용되고 있는 코루틴에 접근한다는 문제. 2번의 경우 new 키워드 처럼 인스턴스를 만들어 사용하면 될거같은데 제가 못찾는건지 안나오네요.. 아님 제가 설계 자체를 잘못한걸까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
씬 이동시 fade out in 관련 질문입니다.
안녕하세요 씬 이동시 fade out in을 구현하고 싶습니다. 구글링을 통해서 많은 자료를 봤지만 본 강의에서 설계한 Manager 패턴에 적용시키기 어려웠습니다. 가령 버튼을 누르면 fade out in이 동작하거나 monobehavior를 상속받은 별도의 FadeManager를 만드는 등 본 강의와 조금은 이질감이 느껴지는 코드들이었습니다. 기존 틀을 유지한채 fade out in을 적용할 수 있는 방법을 알 수 있을까요? 구글에 떠도는 코드를 따라하려 해도 해당 코드들은 FadeManager의 Child에 검은색 Sprite를 두고 알파값을 변경해가면서 fade in out을 구현했는데 본 강의에서 설계한 대로라면 FadeManager를 생성하고 child를 어떤 방식으로 둬야할 지 모르겠습니다.. 그냥 Manager 밑에 Sprite를 둬도 되는지 의문이 드네요. 가장 좋은 방법이 있을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
애니매이션 질문입니다 (조금 길어요)
중간에 듣다가 점프하는 애니매이션을 넣어보고 싶어서 강의 일시정지 해놓고 점프 하는 애니매이션을 혼자 만들어봤는데 조금 이상한? 부분과 이해가 안가는 부분이 많아서 질문드립니다. 일단 점프 Animation은 유니티짱의 JUMP00 을 사용하였습니다. 점프 조건은 스페이스바를 누를 때 작동되게 하였습니다. 또한 유니티 툴에서 Parameters 부분에 float로 jump를 추가하였습니다. (점프 애니매이션을 실행할때 유니티짱의 position 이 변경이 안되는것을 확인하고 진행하였습니다.) Script코드랑 유니티툴 사진 첨부 하겠습니다. 먼저 Define.cs 에 KeyboardEvent enum타입으로 선언 하였습니다.(아직 왜 Define이라는 파일을 만들어서 관리하는지는 정확하게 이해는 안가지만 그런가보다 하고 여기 선언 하였습니다.) 그리고 왜인지는 모르겠지만 그냥 강의한거 따라서 InputManager.cs 에 사진과 같은 코드를 작성하였습니다. 그리고 이해는 아직 못하였지만 마우스 클릭을 할때 OnmouseClicked 를 Start에 만들어 주었기때문에 똑가이 만들고 선언해주었습니다 그리고 유니티 툴의 State 머신입니다. 현재 State 머신에서 WAIT를 눌러보면 WAIT -> RUN에서는 Has Exit Timed이 꺼져있고 WAIT -> JUMP에는 제가 Has Exit Time 을 껏습니다. 그리고 RUN -> WAIT : Has Exit Time OFF 상태이고 RUN -> JUMP : Has Exit Time OFF 상태입니다. 그리고 JUMP -> WAIT : Has Exit Time OFF상태이고 JUMP -> RUN : Has Exit Time ON(체크된상태) 입니다. JUMP -> RUN에서 Has Exit Time 을 꺼버리면 WAIT 애니매이션이 계속 지속이 되고 Has Exit Time 켜주면 다시 애니매이션이 동작합니다. 다만, 여기서 점프를 하고난 후에 잠시 뛰는 애니매이션을 실행하고 다시 WAIT 애니매이션을 실행합니다. 궁금한 질문 입니다. 질문1 : 막연한 질문이지만 왜 점프를 하고난 뒤에 뛰는 애니매이션을 잠깐 실행하고 멈추는 지 모르겠습니다. JUMP, RUN의 Blending부분을 안곂치게 실행을 해보아도 똑같았습니다. 질문2 : PlayerController.cs에서 작성한 void OnKeyBoardPressed(Define.KeyBoardevent evt) { if (_state == PlayerState.Die) return; Animator anim = GetComponent<Animator>(); anim.Play("JUMP"); } 이 함수 없이도 InPutManager.cs 에 if(Input.GetKeyDown(KeyCode.Space) == true) { KeyBoardAction.Invoke(Define.KeyBoardEvent.P_Space); _pressed_space = true; } if(Input.GetKeyUp(KeyCode.Space) == true) { KeyBoardAction.Invoke(Define.KeyBoardEvent.P_Space); _pressed_space = false; } 이 부분과 PlayerController.cs에서 작성한 이부분만 있어도 점프가 되던데 어떠한 식으로 함수를 주고받는 것인지 이해가 안갑니다.. Playercontroller.cs의 Start()함수에서 Managers.Input.KeyBoardAction -= OnKeyBoardPressed; Managers.Input.KeyBoardAction += OnKeyBoardPressed; 이 두줄을 주석처리하거고 실행하면 에러가나서 점프가 안되는데 왜 저런식으로 코드를 짜야 점프가 되는지 모르겠습니다. 질문 3 : Playercontroller.cs의 OnKeyBoardPressed의 인자러(Define.KeyBoardEvent evt) 이런식으로 넘겨 주고 밑에 if문으로 함수를 짯는데 Define.KeyBoardEvent evt 의 의미가 Define.KeyBoardEvent 이녀석이 true라는 말이거나 아니면 뒤에 Define.KeyBoardEvent에서 P_Space를선언 해주었다는 말이랑 같은 말인가요? 질문 4 : Start()에서Managers.Input.MouseAction -= OnMouseClicked; Managers.Input.MouseAction += OnMouseClicked; 이러한 부분이 콜백함수인것은 알겠는데 어떤식으로 호출하고 호출되는지 모르겠습니다.. 질문 5: 학교가 게임만드는 학과인데 이때까지 수업들어왔던 내용들이 이해를 못한 부분들이 많은데 그냥 이대로 수업을 쭉 듣고 혼자 실습하는 형태로 진행하는것이 좋을까요 아니면 이해가 될떄까지 늘어지는게 좋은방법인가요..?? 2학년인데 게임개발 잘하시는 분들보면 현타가 옵니다..ㅠㅠ 질문내용을 이해하기 어려우실 수 있는데 답변드린다면 정말정말 감사하겠습니다. 감사합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
카메라가 플레이어를 따라다니게 할 때 LateUpdate 대신 FixedUpdate를 사용하면 어떤 문제가 발생하나요?
카메라가 플레이어를 계속 조준할때 두 스크립트의 Update가 겹쳐서 플레이어가 버벅거리듯 출력되기에 카메라 스크립트의 update를 LateUpdate로 변경해서 제일 마지막에 update 시키는건 강사님 덕분에 명확히 이해됐습니다. 한가지 궁금한건, 유니티 문서에서 이벤트 순서를 보여주셨을 때, update()와 lateupdate()의 훨씬 이전에 fixedUpdate()가 제일 먼저 작동하는것으로 나와있던데, 만약 카메라를 일반 Update()로 사용하고 카메라의 타겟인 플레이어의 움직임을 FixedUpdate()로 사용할 경우 어떤 문제가 발생할 수 있나요? FixedUpdate()가 물리연산에 사용된다는 설명은 들었지만, 아직 물리적인 부분을 안 만져봐서 그런지 정확히 어떤 문제가 생길지 잘 와닿지 않아서 질문을 남겨봅니다.