월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
인디게임으로 2D온라인을 만들고싶은데 이 커리큘럼도 들어야하나요?
혹시 저는 인디게임으로 2D온라인을 만들고 싶은데 3강 3D 유니티 강의를 들어야 하나요? 이미 절반정도는 듣기했는데 딱히 3D를 만들생각은 없어서요
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
14:13 Managers.Resource.Destroy 에 대해서
안녕하세요 Rookiss님 강의 잘 듣고 있습니다! 14:13에서 저번시간엔 리소스 매니저 Destroy()를 쓰셨다고 하셨는데, 저번 강의 시간에 비교로 보여주셨던 코드는 GameObject.Destroy()로 파악 해서 질문 드립니다.GameManager의 Despawn()이 풀링 관련 처리가 되어있는 것도 내부에서 리소스 매니저의 Destroy를 호출해서, 그 내부에서 Poolable을 통한 확인이 있었기 때문에 가능하다고 이해했습니다.이번 시간 새로 만든 메서드인 Despawn()과의 비교 대상을 GameObject.Destroy()로 두는 것이 맞을까요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
스크립트 변수명, 함수명 등 바꿀 때 팁이라고 해야할까요?
중복이면 죄송합니다.바꾸실 이름에 커서를 두고 Ctrl + R(두번)을 누르시면 이름 바꾸기가 나오는데 바꾸실 이름을 입력하고 엔터를 누르시면 참조되어 있는 것들 싹다 변경됩니다.
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Create()에 대해 궁금한 부분이 있습니다
복습 중 아리까리한 부분이 있어서 질문드립니다.// ResourceManager public GameObject Instantiate(string path, Transform parent = null) { // ... // 풀링된 객체라면 풀에서 가져온다. if (original.GetComponent<Poolable>() != null) return Managers.Pool.Pop(original, parent).gameObject; // ... } // pool Poolable Create() { GameObject go = Object.Instantiate<GameObject>(Original); go.name = Original.name; return go.GetOrAddComponent<Poolable>(); }위 코드에서 Poolable 컴포넌트를 가지고 있는 오브젝트만 Managers.Pool.Pop(origian, parent)를 진행하기 때문에 Create()까지 타고 넘어오는 오브젝트는 Poolable 컴포넌트를 갖고 있는 오브젝트들이고, pool에 push하는 부분에서 혹시나 Poolable컴포넌트를 빼먹지 않기 위해 반환 타입이 go.GetOrAddComponent<Poolable>();로 되는 것인가요?Create의 대상이 Poolable을 무조건 가지고 있다고 가정하고 작성했기 때문에 GetOrAddComponent를 사용하는 것이라고 이해하는게 맞는지 궁금합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UI 자동화 장점
예전에 회사에서 유니티로 어플을 만들 때 버튼 클릭할 때 나오는 사운드를 BUTTON 컴포넌트에 함수로 매핑을 해준 적이 있었습니다. 드래그앤드롭으로 인스펙터창에 붙였었는데, 유지보수 측면에서 함수의 이름을 바꿔야할 상황이 왔었는데 함수 이름을 바꾸니 제가 프로젝트의 버튼에 매핑 시켰던 모든 버튼 클릭 함수가 Missing이 떴었습니다. 이 때, 루키스님의 UI 자동화의 장점을 뼈저리게 느꼈었는데 혹시 이런 상황 말고도 루키스님이 자주 쓰시고 저희에게 가르쳐주신 UI 자동화만의 장점이 있을 까요?? 단점도 궁금합니다(아마 단점은 하나의 Scene에서 게임 오브젝트의 이름이 같은 게 2개 이상 있으면 정상 동작하지 않는다 인 것 같은데 맞을까요? 그 외의 단점도 궁금합니다!!)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
옵저버 패턴을 잘 모르겠습니다
구글에 찾아보니 설명이옵저버패턴이란 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴입니다.이라고 되어있는데 이번수업에서의 경우엔 객체가UI_EventHandler이고 옵저버가UI_Button인건가요? 또한, Action이 여러 함수포인터를 저장해놓고 Invoke를 호출할때마다 저장된 함수포인터들을 전부다 사용하는것이라고 이해해도 되는걸까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
start문에 디버깅을찍어도 안들어갑니다.
혹시 짐작가는 부분이있으실까요? 코드는 영상보며 여러번체크해서 다른점은 없는것같습니다.. 이렇게 그냥 단순 디버그문을 만들어서 찍어도 브레이크포인트에 안걸리고 그냥 실행이되네요
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Quaternion.Slerp 적용하면 유니티 짱이 20~30도 쓰러져요.
화면 클릭해서 이동시 transform.LookAt(_destPos); 위 코드 대신부드럽게 회전하기 -- 아래 코드로 하면 마지막 멈출때 유니티 짱이 쓰러짐. ㅜㅜtransform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(dir), 5 * Time.deltaTime); //t는 회전 속도 trasform.LookAt(_destPos)일때는 쓰러지지 않습니다.
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UnityChan이 Cube를 몇번 튕긴 후 Cube를통과합니다.
충돌 테스트에서UnityChan이 Plane이나 Cube에 퉁기기는 하지만, 여러번 충돌하면 결국 통과합니다. 통과 못 하도록 막을 수 없나요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
구독에관해 질문있습니다.
Managers.Input.MouseAction -=OnMouseClickedManagers.Input.MouseAction +=OnMouseClicked 가 PlayerController안에 있는데 PlayerController가 여러게임 오브젝트에 붙어있을경우 -=OnMouseClicked로 먼저 제거한후 +=OnMouseCliked로 구독하니까 여러 오브젝트중 하나만 움직여야 한다고 생각했는데 그렇지 않아서 질문합니다.MouseAction에는 같은 이름의 OnMouseClicked를 추가하더라도 각 오브젝트마다 각각 다른 OnMouseClicked로 관리되나요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
섹션 8.Scene SceneManager(1) 관련하여 질문이 있습니다
강의 영상 7분 경 씬 UI인 UI_Inven를 화면에 띄우는 코드를 PlayerController.cs 에서 GameScene.cs로 옮겼는데 Null 오류가 발생했습니다. PlayerController.cs 에 위 코드가 있을 때는 정상적으로 작동하는데 옮기면 계속 오류가 발생합니다.오류로그hierachy 창인스펙터창코드(GameScene.cs)public class GameScene : BaseScene{ void Start() { Init(); } protected override void Init() { base.Init(); SceneType = Define.Scene.Game; GameManager.UI.ShowSceneUI<UI_Inventory>(); } public override void Clear() { }}코드(GameManager.cs)using System.Collections;using System.Collections.Generic;using System.Runtime.InteropServices.WindowsRuntime;using UnityEngine;public class GameManager : MonoBehaviour{ static GameManager instance; static GameManager Instance { get { Init(); return instance; } } InputManager input = new InputManager(); public static InputManager Input { get { return Instance.input; } } ResourceManager resources = new ResourceManager(); public static ResourceManager Resources { get { return Instance.resources; } } private DataManager data = new DataManager(); public static DataManager Data { get { return instance._data; } } private UIManager ui = new UIManager(); public static UIManager UI { get { return instance._ui; } } void Start() { Init(); instance.data.Init(); } void Update() { input.OnUpdate(); } static void Init() { if(instance == null) { GameObject go = GameObject.Find("@GameManager"); if (go == null) { go = new GameObject { name = "@GameManager" }; go.AddComponent<GameManager>(); } DontDestroyOnLoad(_go); instance = go.GetComponent<GameManager>(); } }}
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Managers 질문
안녕하세요.선생님께서 말씀해주신 내용에서 궁금한 점이 있어서 두 가지 질문 드립니다. 1:00 강의선생님께서 컴포넌트와 관련된 클래스를 많이 생성했을 때Update() 함수가 많이 호출되고그 안에서 각각 Input.GetKey를 많이 호출하면 성능부하가 생길 것이라고 이해했습니다.KeyAction 에다가 OnUpdate 함수를 구독하면 각 함수들이 독립적, 순차적으로 실행될 것으로 이해됩니다.위처럼 이해한다면 Update에서 각각 호출하는 것과 성능부하가 생긴다는 것이 잘 이해가 되지 않습니다. 선생님께서 말씀하신 인풋을 각각 관리하면 추후 유지보수에 어렵다는 내용에는 이해가 가지만 성능부하 관련해서는 아직 제 지식이 짧아서 이해가 잘 가지 않습니다.. Managers 내부 InputManager 변수Managers 클래스를 싱글톤으로 생성한 이유는 Managers를 여러 오브젝트에 붙였을 때 따로 생성되고,여러개가 생성될 필요가 없기 때문이라고 이해했습니다.그렇다면 Mangers 내부 변수들도 저는 한번씩 생성되어야 된다고 생각이 됩니다. 하지만 InputManager _input = new inputManager();를 변수에서 생성한다면 Managers 클래스는 한번씩 생성되지만 InputManager 클래스는 여러 object에 Managers.cs를 어태치 한다면 계속 생성된다고 이해됩니다.혹시 제가 이해한 내용이 맞을까요? 맞다면 static 변수로 선언해야 되나요?? 그리고 좋은 강의 제공해주셔서 정말 감사합니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Manager클래스안에 다른매니저들에 static붙이면 안되는이유
저는 InputManager나 ResourceManager도 하나만 존재해야할것 같아서 static을 붙여주었는데 저렇게 빨간줄이 그입니다 ㅠ.. 혹시 왜이러는지 알려주실수 있을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
스크립트 더블클릭해서 열면 함수들이 안떠요
강사님처럼 이렇게 함수들목록이 뜨지않는데 이는 어떻게 해결할수있나요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Input.anyKey == false 를 사용하는 이유? (KeyAction == null 은 안되나요?)
InputManager 에서 마우스든,키보드든 아무키나 눌렸는지 확인할때 Input.anyKey == false 를 사용하셨는데요.(KeyAction == null) 이렇게 사용해도 같은 의미인것 같아서 혼란스러운데요. (KeyAction == null) 이 내용으로 대체해도 상관 없나요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
보충 에셋 다운 관련
안녕하세요 보충 에셋관련 리소스들은 강의를 그전까지 다 들어야 다운이 가능한건가요? 미리 다운받으려 했는데 구름모양으로 된 다운버튼이 안보입니다..
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
OnClickEvent
안녕하세요UI_Popup을 상속받는 Popup 스크립트에서, [AntCompany]Init(){GetButton( .. ).gameObject.BindEvent(OnClickEvent1);} void OnClickEvent1() { } ===[Unity Part.3]Init(){GetButton( .. ).gameObject.BindEvent(OnClickEvent1);} void OnClickEvent1(PointerEventData data) { }=== Part.3에서는 PointerEventData를 왜 인자로 넘겨주는지 궁금해요!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
VS Studio가 Unity에 연결되지 않습니다.
예전에는 잘 되던 Unity에 연결이 실패합니다.VS 버전 : VS Studio 2022유니티 버전 : 2021.3.5f1오류코드 : 대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다 + ip주소 제가 구글링 이후 시도한 방법으로는Edit > Preferences > External Tools > External Script Editor에서 VS Studio 2022가 맞는지 확인Regenerate project files로 .csproj 재생성방화벽이 허용하는 앱에서 VS 2022 허용 체크하기방화벽 끄고 연결시도하기유니티와 VS를 껐다 다시 켜기이렇게 시도해 보았지만 모두 효과가 없었습니다ㅠㅠ
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
nullpointexception 에러가 뜹니다.
2시간동안 이리저리 따라해서 계속 널포인트가 뜹니다.PlayerController클레스의 여기에서 널포인트가 뜹니다. Managers.Input.KeyAction += OnKeyboard; 에러내용은 아래이고NullReferenceException: Object reference not set to an instance of an objectManagers.get_Input () (at Assets/Script/Managers/Managers.cs:11)PlayerController.Start () (at Assets/Script/PlayerController.cs:12)
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
거리 계산
개발중 궁금한 것이 하나 생겼습니다. 주위에 있는 특정 오브젝트 (ex 적)들을 찾을 때는 어떤식으로 개발하는게 좋을까요 ? OverlapSpher를 활용하는 방법Vector3.Distance 또는 magnitude를 활용하는 방법그리고 이 둘 중 나중에 서버를 추가한다고 할 때 어느 방법이 더 유용한가요 ?