월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
코드 스타일에 대한 질문입니다
캐릭터 이동의 강의때부터 궁금한 점입니다만, 간단한 코드인데도 if-else문이 조금 많지 않나?라는 궁금증이 생겼습니다. 물론 직접 코드를 작성하다보니, 생각보다 게임에선 조건부 선택지가 많은 경우가 있어서 사용이 불가피할 것 같긴한데, 과연 이게 최선일까?라는 의문이 자꾸 듭니다. 제가 게임 개발 쪽은 처음 접하는 분야라 질문드립니다.if-else문이 많이 나오는 건, 아직 코드 최적화나 설계라던가 적절한 메소드를 잘 활용하지 못해서 그런 걸까요?아님 자주 쓰일 수 밖에 없는 부분인 걸까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Gameobject에 대한 기초 질문
삭제된 글입니다
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Componet에 대한 질문
안녕하세요 Component에 대한 질문입니다. Utill 코드를 작성하다 든 의문입니다. (지금부터 작성하는 질문에 제가 잘못 생각하고 있는 부분이 있다면 말씀해주시면 감사하겠습니다.) UI_Button PointButton PointText ScoreText 현재 계층도가 이렇게 있다고 했을 때, 자동화 하는 이유가 PointButton, PointText, ScoreText 이 셋을 코드상에서 찾기 위함으로 이해했습니다. 곰곰히 생각해보니 GetComponentsInChildren, GetComponent 이 함수들은 Component를 반환하는 함수이지 UI_Button 산하에 있는 PointButton, PointText, ScoreText와 같은 GameObject를 찾는 함수는 아니라고 생각했습니다. 유니티 공식 문서를 찾아보니 결국 반환값은 GameObject에 부착된 componet를 반환하더군요. 질문1 구현하려는 목적이 GameObject가 아닌 GameObject에 달린 컴포넌트를 찾는 것이 맞나요? 실제로 그런지 확인을 하려고 디버깅을 하는데 두번째 궁금증이 생깁니다. 저 base는 어떤걸 나타내는 건가요? base에 PointText라고 적혀있어서 값이 componet가 아닌 GameObject라는 다소 엉뚱한 생각이 조금 듭니다. 저 base는 컴포넌트가 부착된 GameObject에 대한 정보를 담고있는 건가요? 사적인 질문) 선생님은 호드인가요 얼라이언스인가요
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
해당 플레이어의 정보를 저장하려고 하면 어떻게 해야 할까요..
이번 유니티강의를 마무리하고 웹서버를 붙여서 포트폴리오를 만드는 과정에서 고민이 생겼습니다. 강사님과 만든 프레임워크를 보면 플레이어 스텟정보는 모노비헤이비어 방식으로 플레이어 프리팹안에 있는 방식인데요.. 웹서버에 해당 플레이어의 정보를 저장하려고 한다면, 어떤식으로 해야할지 도저히 감이안잡히네요.. 제가 지금 만든 방식은 Data.Contents 안에 모노비헤이비어를 상속받지 않은 일반 PlayerStat 을 만들어 DataManager에 생성한 다음. 웹서버에 저장과 불러오기를 하고 있습니다. 플레이어가 생성될 때 플레이어 스텟에있는 값들을 DataManager에있는 상속받지 않은 PlayerStat 클래스의 데이터 값을 그대로 집어넣는 방식으로 작성했는데 이 방식이 너무 난해한거같아. 강사님한테 어떤 방식이 좋을지 여쭤보고 싶네요 ㅠㅠ
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
캐릭터에 심어진 콜라이더에 대해 재질문 및 추가 질문입니다.
너무 궁금해서 질문올립니다. 구글 검색해보니 PlayerController를 쓰는 예제도 있고 뭐 여러가지가 있는데 캡슐 콜라이더를 붙이고 정상적으로 이동이 되는 걸 보고 싶어서요. 강사님께서는 키네마틱이 꺼져있어서 물리 적용을 받아서 그런거 같다고 하는데 제 생각도 같습니다. 다만 키네마틱을 켜는 순간 다른 오브젝트들과 물리 상호 작용을 하지 않는 것으로 알고 있어서 물리 상호 작용하면서 정상적으로 구현하고 싶네요. 예전에도 만들다가 결국 PlayerController써서 중력 적용 시켜서 만들었는데 뭔가 안되서 포기하고 만들었던거라 찜찜한게 남아있거든요. 부탁드립니다 ㅠㅠ 아 그리고 강의 중반부터 섹션 5부터 섹션 6으로 넘어갈때 캡슐콜라이더가 꺼져있고 메쉬콜라이더가 켜져서 움직이던데 스킨메쉬렌더러라서 메쉬정보 없어서 convex가 안되는 것으로 알고 있는데 어떻게 plane위에 서있는지도 궁금합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
deltaTime 질문
이 델타타임은 한 프레임이 완성되는 데에 걸리는 시간이잖아요 그러면 이게 개개인의 컴퓨터마다 다를텐데 그에 대한 델타타임 계산은 유니티엔진에서 자체적으로 해주는 건가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
parent: gridPanel~은 코드 보는 사람을 위한 힌트라는건가요?
주석처럼 코드를 보는 사람을 위한 힌트인건가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Raycast 질문
안녕하세요 강의 너무나 잘 듣고있습니다. 강의에서 CameraController의 Raycast에서 origin(플레이어) direction(카메라 방향)으로 구현하셨습니다. origin을 카메라로 direction을 플레이어 방향으로 구현하지 않으신 특별한 이유가 있을까요? 몇 가지 이유를 생각해봤는데 계산이 어렵다는 생각이 들더군요 (벽이 두껍다던지 다수의 오브젝트가 카메라를 막고있다던지..의 상황에서요) 다른 이유가 또 있을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
캐릭터 마우스 클릭 이동시 질문입니다.
검색해보니 후반에 추가 수정하셨다는 답변글이 있는거 같은데... 아직 거기까지 진도는 못빼서요. 키보드 입력받고 캐릭터를 돌릴땐 아무 문제가 없습니다. freeze Rotation을하니 회전이 안먹더라구요. 근데 마우스 입력 부분 집어 넣으니 땅을 찍고 이동하면 꼭 도착할때쯤 마지막에 가서 x축이나 z축의 회전이 먹네요. freeze Rotation을 했음에도 불구하고... 후반부에 이 내용에 대한 수정 부분이 나온다면 계속 보면 되겠지만 현재로선 궁금해서 질문 올려봅니다. 제 생각에는 마지막 도착할 즈음에 bool 변수를 false로 바꿔서 더 움직임을 갖고 가지 않도록 막는거 같던데 거기에서 로테이션 값을 리셋시켜주는 방법으로 풀어나가야하나 생각하고 있었습니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
화면과 같이 나오는데 무슨문제일까요 ㅠㅠ 어제까지 잘 강의보면서했는데,.,
원래라면 Unity에 연결이라 떠야하는데 시작이라는 빌드가 뜨네요 ( F5빌드칸)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
안녕하세요. 액션에 관해 질문이 있습니다..
안녕하세요. 수업 내용을 이해하려고 이거저거 바꿔가면서 해보고 있는데요.. UI_Button.cs에서 한가지 실험을 해보고 있었습니다. 'A델리게이트에 다른 델리게이트B를 붙여서, A가 실행 되면 B에 대기중인 메소드들도 실행한다'를 해보고 싶었습니다. 그런데. evt.OnClickReady += (PointerEventData data) => { evt.OnDragReady.Invoke(data); }; 와 같이 람다식으로 붙여넣을 때에는 의미가 있는지 아직 잘 이해를 못하고 있는 파라미터를 그냥 넣었는데 그냥 문제없이 실행이 되고요. evt.OnClickReady += Myfunc(PointerEventData data); 와 같이 Invoke가 들어간 메소드를 만들어서 붙이려니, 파라미터의 제약이 상당히 심하다는 것을 느끼고 있습니다. 그냥 파라미터들을 비우고 실행하려니 Invoke에 빨간줄이 붙고요.. 한참 붙들고 있어서 질문 내용이 두서없을 수 있는데요; 제가 무엇을 검색해야 이 상황을 이해할 수 있을까요? Imgur: The magic of the Internet 그림이 첨부되지 않아 캡쳐 링크 합니다..
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
혹시 캐싱이 이런데 쓰일 수 있는건가요?
안녕하세요. 이렇게 좋은 배움의 기회를 주셔서 늘 감사한 마음입니다. 앞의 강의를 들을 때 살짝 캐싱이란 단어가 나온 적이 있었는데요. 잘 알지는 못하지만, 이게 찾는데 수고?연산?이 필요한 자료의 주소를 적어놔서 다음부터는 직접 가져오게 만들면, 어떤 방법이든 다 캐싱이라고 부를 수 있는 것 맞나요? 그 이번 강의에서 Util.cs에서요. GetChild라는 메소드가 여러번 쓰일 것이라 생각이 드는데요, 이런 경우에 먼저 뽑아서 배열에 담고 비교를 하면 실제로 효과가 있을 수 있나요? 또, 이런 고민이 들 때에는 어느 방법이 좋을지 답을 찾아내는 보편적인 방법이 있나요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
delegate 관련 질문 (InputManager강의 중)
안녕하세요 InputManager 강의 중 아래 내용에 대해 아래와 같이 이해하였는데요, 몇 가지 질문이 있습니다 (강조 부분) 1. 아무 키나 눌러질 경우 첫째 if 문을 넘어가 둘째 if 문에 당도 2. Player 게임오브젝트의 PlayerController에서 Start함수 부분에서 KeyAction에 +=로 OnKeyBoard()를 걸었으므로(구독했으므로) 현재 KeyAction은 != null 인 상태 (정확히 얘기하면 KeyAction = OnKeyBoard(); 인가요? -> 이게 KeyAction이 OnKeyBoard()함수의 주소를 들고있다 나중에 호출될 경우 불러낸다는 의미로 이해하면 될까요?) 3. 아무 키나 눌렀으므로 둘째 if 문 내부로 들어가 KeyAction에 걸린(구독된) OnKeyBoard()가 KeyAction.Invoke();를 통해 실행됨. 만약 PlayerController 말고 다른 Component 에서 해당 KeyAction이라는 delegate (Action이 delegate의 일종이라고 이해해서요)에 본인의 함수를 걸었을 (구독했을)경우 그 함수도 같이 실행이 되는건가요? 그럼 이 때는 KeyAction이 여러 함수의 주소를 동시에 들고있다가 동시에 호출하는 건가요? 늘 좋은 강의 잘 듣고 있습니다. 감사합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
SerializeField 질문이요
이 강의 말고 다른 사람의 강의도 종종 듣고 있는데 그분도 SerializeField 사용을 많이 하시더라고요 강의 편의상 자주 사용하는 건지 아니면 실무에서도 자주 사용하는 건지 궁금합니다
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
여기서 점프상태를 만들려면 어떻게 해야 돼요?
뭔가 제 상상으로는.. 저보고 하라고 하면 OnMouseClicked()에 또 isJumping 같은걸 추가해서, 폭탄의 전선을 하나하나 늘려서 PlayerState를 정의 해주려 할 것 같고, 그 방법 밖에 떠오르질 않습니다..
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
anchor 질문이요
anchor가 안보이는데 다른걸 클릭해야 보이는 건가요? 간단한거 같은데 아무리 찾아봐도 안보여서 질문 드립니다
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
마우스 클릭 후 물리현상
마우스 클릭해서 캐릭터가 이동하는거까지 잘되는데요. 이동한 후 캐릭터가 조금씩 뜨면서 천천히 날아갑니다. Use Gravity켜면 날아가지는 않는데 어떤 힘을 받는지 천천히 앞으로 쓰러져요. Is Kinematic켜면 물리현상이 없어져서 이런게 다 괜찮아지기는하는데, 강사님 영상에서는 UnityChan이 Use Gravity랑 Is Kinematic이 체크가 안되어 있더라고요. 영상이랑 똑같이 gravity랑 kinematic 체크푼 상태에서 잘 잘작동했으면 좋겠는데. 마우스 이동 후 공중으로 천천히 올라가는걸 고치고 싶은데 어떻게 해야하나요? 코드는 다 살펴봤는데 다른 점은 없었던 것 같아요.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
회전/이동 코드 관련 질문
제가 키 입력 받는 것이 if문으로 받기 껄끄러워서if문을 switch로 대체하고, 키입력은 Input.inputString으로 받아서 다음과 같이 작성하였습니다. void OnKeyboard() { switch (Input.inputString) { case "w": Move_Rot(Vector3.forward); break; case "s": Move_Rot(Vector3.back); break; case "a": Move_Rot(Vector3.left); break; case "d": Move_Rot(Vector3.right); break; } } void Move_Rot(Vector3 vector) { float delta = Time.deltaTime; transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(vector), delta * ROT_SPEED); transform.position += vector * delta * SPEED; } 그런데 이처럼 작성하면,회전이나 이동속도가 굉장히 느려지고, 회전 동작도 뚝뚝 끊깁니다.(물론 동일한 방식으로 if문으로 작성했을 때는 끊김없이 부드럽게 이동되었습니다.) 혹시 이와 같은 일이 일어나는 건 무엇 때문일까요?switch문이 아니면, GetKey가 아니라 Input.inputString으로 키입력을 가져와서 일까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강사님 유니터버전에 대하여 질문이있습니다.
유니티 2020.2버전으로 해당강의들을 쭉 진행하였는데 코드를 똑같이했는데도 2019버전에서는 잘돌아가고 2020버전에서는 인식을 못하는거같습니다 버전마다 차이가있나요? 오류가게속나길래 강의자료의 스크립트를 그대로옮겨왔는데도 똑같은오류가 나네요.. 오류명은 NullReferenceException: Object reference not set to an instance of an object InputManager.OnUpdate () (at Assets/Scripts/Managers/InputManager.cs:17) Managers.Update () (at Assets/Scripts/Managers/Managers.cs:33) 이걸확인하면 EventSystem을 못찾아서 작동이안하는거같은데gameScene 이 baseScene 을 상속을받아도 baseScene의 Init()을 작동을 시키지못하는거같습니다. gameScene에서 따로 void start로 Init()을 해주면 EventSystem이 다시생겨서 작동이되는데 2019버전에서는 그렇게안해도 작동이됬거든요 버전의차이인가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
static 키워드에 대한 의문
안녕하세요 강의를 들으며 많은 것을 배워가고 있습니다. static 키워드에 관해 두가지 질문을 드리고 싶습니다. 1. static 변수는 프로그램의 시작과 함께 데이터 영역에 할당이 된다고 배웠습니다. 의문점은 문득 코드를 살펴보다 static으로 선언된 Input이라는 변수는 인스턴스화 하기 전에 할당되는 변수인데 get으로 _input을 반환한다는게 조금 어색하게 다가왔습니다. 혹시나 하는 마음에 s_instance를 반환하는 Instance 프로퍼티를 가지고 유사하게 실험을 했습니다. static Managers s_instance;에서 static을 없애니 Instance로 선언된 프로퍼티의 get부분에서 s_instance를 static으로 선언하라는 에러가 났습니다. 위의 두 줄과 아래 두 줄이 동일한 매커니즘을 거치는 것 같은데 한쪽은 static이 없고 한쪽은 static이 있어야 하는 상황에 대해서 알고싶습니다. 2. 두번째 질문은 static 메서드와 static 변수는 정확히 어느 시점에서 할당이 되는지 궁금합니다. 구글링을 해보니 "클래스가 메모리에 올라갈때" 라는 다소 추상적인 글을 확인할 수 있었습니다. 이 말이 로딩과정에 일어나는 일이라고 이해해도 되는걸까요? 이에 대해 조금 자세히 설명을 부탁드려도 될까요?