월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[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()가 물리연산에 사용된다는 설명은 들었지만, 아직 물리적인 부분을 안 만져봐서 그런지 정확히 어떤 문제가 생길지 잘 와닿지 않아서 질문을 남겨봅니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
팝업 UI의 생명주기에 대해 질문이 있습니다.
보통 팝업UI라 하면 Alert창이나 Confirm창으로 확인이나 닫기 버튼 등을 통해 원하는 기능(페이지 이동, 함수 실행 등)을 수행하도록 하게될텐데요, 마지막 ClosePopup을 어디서 수행하게 될지 궁금해서 여쭤봅니다. 예를 들어 Item 구매 -> 수량설정 팝업UI -> 구매확인 팝업UI -> CloseAllPopup 의 구매절차가 있고 팝업UI에선 확인 버튼으로 다음 단계로 넘어간다고 했을때 마지막 팝업UI의 확인버튼에서 CloseAllPopup을 호출하면 버튼이벤트 함수가 종료되지 않은 상태에서 해당 객체를 지우려 하기때문에 ArgumentException: method arguments are incompatible 이런 에러를 발생시키는것 같습니다. 결국 확인버튼이 눌렸을때 closePop을 하는것이 아닌 다른곳에서 해줘야 될 것 같은데 보통 어떤식으로 처리하는지 힌트나 조언 좀 주시면 감사하겠습니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
GetInstance() 메소드를 프로퍼티 형식으로 변환하는 과정에서 get 오류
안녕하세요! 선생님 강의를 열심히 수강중인 학생 입니다. 17:48 쯤에서 GetInstance() 메소드를 프로퍼티 형식으로 바꾸어주셨는데, 강의를 보며 따라하면 get을 사용할 경우 에러메시지가 출력됩니다. 제가 뭔가 빼놓은 건지 여러번 살펴보아도 알 수가 없습니다ㅠㅠ visualstudio 2019 사용중이고, 에러메시지는 "get 이름이 현재 컨텍스트에 없습니다" 라고 합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Medieval Town에셋을 받고 문제가생겼어요 ..
에셋 데모씬을 게임씬으로 수정한뒤, 카메라와 유니티짱과 이벤트시스템만 복사해왔는데, 그뒤로 레이캐스트를 안쏘네요..이동도 안하구요 혼자 해결해볼려고 디버그도 하고 여러가지 만져봤는데 이유를 도저히 모르겠습니다.완전히 안되면 오히려 괜찮은데, 광클하다보면 한번씩 이동이 되는 경우가 있어요..+= 전에 -=를해서 그런가 싶어서 요걸 주석처리해봤는데도 계속이럽니다.. 이동한것 외에는 코드 수정한것이 없고, 그전에는 잘작동했었는데 왜이럴까요..?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
질문
코드에서 transform를 사용할떄 왜 Component,transform라고 하지않고 transform라고 하는건 MonoBehaviour에 compent를 상속받았기때문인가요 ?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
영상 내에서는 Managers.Instance 호출 하는 코드가 없는데 @Manager가 어떻게 생성되는지 모르겠습니다.
어디선가 Managers.Instance를 한번 호출해야 @Managers가 생성되는거죠? (하이어라키뷰에 @Managers가없다면) 제가 못 찾는건지 영상을 보면 PlayerController에 Managers.Instance를 하는 코드가 없고 @Managers 가 생성되어 있지도 않은데 @Managers가 게임실행하면 생성되네요. 그냥 제가 못 찾은 것이라면 어디선가 실행하면 되겠지만 혹시나 다른 코드로 인해 생성되는거라면 어디서 생성되는 건지 알고 싶어서요!! 그리고 보통 Managers의 생성은 어디서 실행하는게 좋을까요? 후반부 SceneManager에서 실행하면 되겠다 생각이드는데 딱히 정해진 곳은 없는건가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강의질문
1. c언어에서 static 변수가 전역변수랑 동일하나 지역함수?에서만 쓰이고 프로그램시작과 동시에 할당되고 초기화도 한번 종료될때 소멸한다던데 이게 c#에서도 적용되나요? 2. 영상에서 static Managers s_Instance를 전역변수라고 하던데 staic 클래스 변수 아닌가요? 아니면 위처럼 전역변수랑 비슷한 거라서 전역변수라고 한건가요?