월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
커서 사이즈가 화면의 반절을 차지합니다.
스샷으로 보여드리려고했으나 캡쳐하면 커서가 사라져서 보이진 않네요. 같은 이미지 파일에 코드도 강의 내용대로 똑같이했는데 잘 작동합니다. 커서사이즈만 빼구요.. 커서 사이즈가 엄청 크게나오는데 어떻게해야하나요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
질문드립니다.
궁금해서 여러 가지 실험을 해봤습니다. Instantiate는 바로 아래 줄 코드에서 만들어진 객체를 접근할 수 있었는데, Destroy는 실행된 함수 내에서 처리가 안되어 계속 접근할 수 있었고, 다음 프레임에 넘어가서야 게임 오브젝트와 컴포넌트가 null이 되어 접근할 수 없게 되었습니다. 왜 이런 현상이 발생하는지 궁금합니다.
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
질문드립니다.
테스트 해보면서 버그를 발견했는데 마우스를 꾹 누르고 이동할때 몬스터의 콜라이더가 Raycast에 hit되어서, destPos가 몬스터의 콜라이더가 되어버려 몬스터의 콜라이더를 타고 올라가는 것 처럼 보이는 현상이 발생해서 코드를 수정해봤습니다. 아래와 같이 처리하는게 좋은 방법일까요? - 수정 전 - case Define.MouseEvent.Press: { if (_lockTarget == null && raycastHit) _destPos = hit.point; } break; - 수정 후 - case Define.MouseEvent.Press: if (_lockTarget == null && raycastHit) { if (hit.collider.gameObject.layer == (int)Define.Layer.Monster) _destPos = hit.collider.transform.position; else _destPos = hit.point; } break;
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
기획적인 질문!
안녕하세요 강사님! 최근에 수강신청하고 정말 열심히 듣고 있습니다. 강의 감사합니다! 저희가 배우는 주제와 조금 다른 질문일 수는 있지만 너무 궁금해서 질문 남깁니다! 제가 Coffee Talk 와 va-11 hall-a 같은 비주얼노벨 형식으로 중간중간 선택지와 간단한 게임 이벤트가 있는 쪽으로 개발 방향을 잡고 싶은데 짜인 텍스트를 계속 불러오면서 게임이 진행되기 위해서는 어떻게 해야 할까요? 자세한 방법을 알고 싶다기보다는 대략적인 설명만 들어도 충분할 것 같습니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Tag기능 대신 Poolable 컴포넌트를 만드신 이유가 궁금합니다.
좋은 영상 올려주셔서 감사합니다. 별로 중요한 내용은 아니지만 궁금증에 한 번 질문해봅니다. 기존의 경험으로 게임을 만들 때, 무언가를 분류해야 한다면 Tag를 많이 사용했습니다. 이 영상을 보지 않고 풀링 오브젝트 패턴을 스스로 만들었다면, Poolable태그를 만들어서 풀링하고 싶은 프리팹에게 걸어줬을 것 같아요. Poolable 컴포넌트를 이용했을 때의 장점이 있다면, 알고싶습니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Animation Event
제가 제대로 기억하는게 맞는지 확인 좀 부탁 드려도 될까요? Animation Event가 Attack Animation에서 오류를 나타내는 이유가 저 기능은 해당 애니메이션의 특정 순간에 다른 이벤트를 호출하는 기능인데 지금 당장은 쓰고 있질 않지만 이벤트가 등록이 되어있고 동시에 그 이벤트를 받는 대상이 없어서 이게 맞나요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강사님 ui 에대해서 질문이있습니다.
강사님 프레임워크 같은경우는 하이라키창에다가 안올리고 전부다 프리팹을 불러오고있는데 모바일 프로젝트같은경우도 이런식으로 UI 들을 생성하고 지우고 해도되는건가요..?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
커서가 깜빡거리는 이유
매 프레임마다 커서를 불러 오다보니까 밀려서 커서가 깜빡인다고 하셨는데요 혹시 이게, GPU랑 모니터 주사율이 안맞아서 테어링이 생기는 이유랑 비슷한건가요? 그래서 고치는 부분을 설명하실 때도 확정적으로 무조건 고쳐진다고 하시진 않으시고 빈도가 낮아진다는 식으로 설명하신건가요?(그래봤자 빈도가 말그대로 한없이 낮아질거 같지만요)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
CameraController 오류
어제 이전 강의 듣고 나서 다시 켜니까 다음과 같은 오류가 뜨는데 도저히 이유를 모르겠습니다 Assets\Scripts\Controllers\CameraController.cs(5,14): error CS0101: The namespace '<global namespace>' already contains a definition for 'CameraController' Assets\Scripts\Controllers\CameraController.cs(14,10): error CS0111: Type 'CameraController' already defines a member called 'Start' with the same parameter types Assets\Scripts\Controllers\CameraController.cs(19,10): error CS0111: Type 'CameraController' already defines a member called 'LateUpdate' with the same parameter types using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraController : MonoBehaviour { [SerializeField] Define.CameraMode _mode = Define.CameraMode.QuaterView; [SerializeField] Vector3 _delta = new Vector3(3.75f, 7, -7); // the distance between the character and the camera [SerializeField] GameObject _player; void Start() { } void LateUpdate() { if (_mode == Define.CameraMode.QuaterView) { // Move the camera forward, closer to Player when Player gets occuluded by walls RaycastHit hit; if (Physics.Raycast(_player.transform.position, _delta, out hit, _delta.magnitude, LayerMask.GetMask("Wall"))) { // the distance between Player and the wall // Make it a bit closer to Player from the wall float dist = (hit.point - _player.transform.position).magnitude * 0.8f; // Move the camera // from Player, with the same direction towards Camera with the distance calucated above transform.position = _player.transform.position + _delta.normalized * dist; } else { transform.position = _player.transform.position + _delta; // Have the camera follow the player transform.LookAt(_player.transform); } } } public void SetQuaterView(Vector3 delta) { _mode = Define.CameraMode.QuaterView; _delta = delta; } }
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UI_EventHandler에 대해서
안녕하세요!! 항상 친절한 답변 감사드립니다. 복습하다가 문득 궁금한 점이 생겨 질문드립니다! Player의 경우 InputManager안에 있는 OnUpdate함수를 Manager에서 계속 update해주면서 Input을 감지하는 반면 UI의 경우 EventHandler를 두고 UI에서 발생할 수 있는 동작을 정의하여 해당 동작을 EventHandler에서 Inuput을 감지하는 것으로 보입니다..! 이렇게 Input을 받아들이는 방식을 다르게 하신 이유는 통상적인 게임 디자인 방식인건가요?? 아니면...UI는 마우스를 활용한 Input만 이루어지기 때문에 PointerData를 사용할 수 있어서 인가요..? 그렇다면 Player_EventHandler를 따로 두고 Action<키보드입력을 받을 클래스>를 활용하는방법은 없나요...? 질문이 너무 꼬리를 무는 것 같아 정신없네요...죄송합니다.. 답변 부탁드립니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강의 중에 선생님이 만드신 포트폴리오 UI나 캐릭터가 와우랑 같던데
이런 자료 참고할 수 있는 오픈소스 사이트가 따로 있는 건가요??
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
"EventSystem" 관련 질문
안녕하세요. "Rookiss"님. `EventSystem`에 대해서 질문드리고 싶습니다. `EventSystem`이 없을 경우, UI의 Canvas를 생성할 때 `EventSystem`이 생성되는 것을 UI 파트에서 보았습니다. 그러면, 1. "`EventSystem`은 `UI`랑만(Only. UI) 관련된 컴포넌트다"라고 봐도 무방한가요? 2. 만약 `UI`랑만 관련된 컴포넌트라면, `UI`가 없는 `Scene`에서는 `EventSystem`을 필요하지 않을 듯 한데 모든 `Scene`에서 `EventSystem` 컴포넌트를 생성하는 이유는 "모든 `Scene`에서는 `UI`가 무조건 존재할 것이다" 하고 가정하고 코드를 작성하는 건가요?? 아니면 다른 이유가 있을까요?? 답변해주시면 감사하겠습니다!
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
콜라이더를 사용할 경우 마우스 클릭 이동에 대해 질문이 있습니다.
코드를 똑같이 작성했는데 저는 플레이어가 마우스 클릭 지점까지 간다음 땅을 향해 엎드리며 부들부들 떠는 현상이 있어 이리저리 테스트 해보다 제가 캡슐 콜라이더를 켜둔게 원인이란걸 알았습니다. 플레이어보다 캡슐 콜라이더 위치가 좀 더 낮아서, 플레이어가 클릭 지점까지 완전히 이동하지 못해 이 분기점으로 들어가지 못했던걸 발견해서 콜라이더 위치를 정확히 조절해서 해결할 수 있었습니다. 그런데 경사면을 만들어두고 테스트를 해보니 콜라이더 때문에 플레이어가 클릭 지점까지 도달하지 못해 똑같은 문제가 발생했습니다. 서론이 길어졌는데 질문은 고저차가 있는 쿼터뷰에서 마우스 클릭으로 이동하는 게임은 보통 콜라이더를 사용하지 않는지, 아니면 if(dir.magnitude < 10.0f) 처럼 오차를 크게 두어서 콜라이더때문에 이동을 못하는 상황을 방지하는지, 혹은 둘 다 아니고 다른 해결 방안이 있는지 궁금합니다.
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
리소스 매니저 만들때 랩핑이라는게 나오는데 정확히 어떤 개념인건가요?
강의와 관련있는 질문을 남겨주세요.• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)• 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달에도 요령이 필요합니다.• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요! 구체적인 질문일수록 명확한 답을 받을 수 있어요.• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다. 기본적인 예의를 지켜주세요.• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다. 리소스 매니저를 만드실때 랩핑을 한다고 하시면서 막 뭔가 하시던데 정확히 어떤 개념인건가요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
enum 사용하는 이유
강의 잘 보고있습니다~ 궁금한것이 있는데 왜 굳이 enum을 사용하나요? 그냥 이름을 비교해서 찾는거라면 string[] texts = {"PointText", "ScoreText"}; 같이 스트링배열로 저장한다음 Bind<Button>(texts); 스트링배열을 넘겨서 바인드를 하면 안되나요? 강의에서도 바인드함수에서 제일 처음하는 일이 어떤타입의 Enum이 가지고 있는 이름들을 string 배열로 옮기는데 (string[] names = Enum.GetNames(type); ) 굳이 enum을 사용하는 이유가있나요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
이동 시 회전 문제
이동 키 입력 시 회전이 이상하신분들은 Tank 밑에 있는 Body, Top, Canon의 Position을 확인해 보세요 PlayerController가 Tank에 추가되었으므로 Tank의 Position 값을 기준으로 Rotation하게 됩니다. Body, Top, Canon의 Position 값은 Tank의 위치에 상대적이기 때문에 X,Y좌표가 크게 차이날 경우 Tank를 기준으로 원을 그리며 이동하게 보입니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Data저장 관련 질물입니다!
게임 종료시 Stat Data를 저장하고 다시 로드할때 json으로 변환해서 저장하고 재실행하면 저장된 json을 파싱해서 사용하면 될까요?? 그리고 Dictionary로 Stat 을 만들어 주셨는데 json으로 저장할때 리스트로 저장해야 되는건지 ..감이 잡히질 않아서 질문 남깁니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UI_Popup 클래스를 상속 받은 UI_Button을 Stack<UI_Popup> 에 넣을 수 있나요?
챕터 1에서 Player와 Mage 같이 UI_Button에 추가적인 필드도 있는데 상관없는건가요? 업캐스팅이라서 상관없는건가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
URP
강의에서 쓰신 에셋을 보니까 업데이트가 된건지 강의에서 보이는거랑 차이점이 몇가지 있습니다 일단 구버전 Unity에서 사용하는 Standard 버전이라고 패키지 파일이 있고 최신 버전의 Unity에서 사용하도록 URP 버전의 패키지 파일이 있던데 어떤걸 써야하나요? 그리고 URP가 뭔가요? 또한, standard 패키지 기준으로 라이트맵이 없던데 없어도 강의 진행하는데 문제는 없나요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
JsonUtility.FromJson()
JsonUtility.FromJson()의 Parsing에 관한 부분을 잘 모르는것 같습니다 GameScene.cs에서 Dictionary<int, Stat> dict = Managers.Data.StatDict; 이렇게 하는 부분을 역추적해서 이해하려 했습니다 저 코드가 실행되는 과정의 초반부에서 이해가 안가는게 DataManager.cs에서 StatDict가 선언 Init에서 LoadJson<StatData, int, Stat>("StatData")을 통해서 Json 파일의 내용이 StatData 클래스에 맞게 로드 TextAsset textAsset = Managers.Resource.Load<TextAsset>($"Data/{path}"); 이 부분에서 파일을 불러오고, return JsonUtility.FromJson<Loader>(textAsset.text); 이 부분에서 파일의 내용을 string 형태로 읽어서 그걸 StatData에 맞춰서 내보내는거 같은데 바로 이 부분이 텅 비어버린거 같아요 그냥 저 코드를 실행하니까 StatData 클래스에 있는 public List<Stat> stats = new List<Stat>(); 이 리스트가 채워져있다 느낌이거든요 혹시 이 부분에 관해서 추가 설명을 해주실 수 있으신가요?>