월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
혹시 유니티에서 안에가 비어있고 껍질만 있는 공을 만드려면 어떻게 해야하나요?
그냥 sphere를 사용하면 채워진 공이 되는데, 구껍질을 만들고 싶습니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
vector.magnitude 사용이유
안녕하세요 제가 따로 공부를하다가 궁금해서 질문 남깁니다. vector.Magnitude는 어떤경우에 어떻게 사용하면 좋은걸까요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
OnHitEvent()가 실행되지 않습니다.
몬스터 AI 강의중에 몬스터에게 OnHitEvent()를 붙여서 거기서 데미지를 처리하고 계속 공격할지 말지에 대한 판정을 하는데, 이 함수 자체에 접근을 하지 않는것 같습니다. (UnityChan은 정상적으로 작동합니다!) Unitychan이 공격 범위 내로 들어오면 처음에 따라와서 스킬 모션 한 번 쓰는 것까지는 되는데 이후 계속 ATTACK상태에 멈춥니다. 계속 Unitychan을 향해 고개를 돌리는걸 보니 UpdateSkill()까지는 잘 실행됩니다. 로그를 찍어보니까 OnHitEvent() 내용 작성 전 처음 넣어놨던 Debug.Log("Monster OnHit");도 출력이 안 되던데 어떻게 해야하나요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
이번 강의에서 구현한 LoadJson 함수 문법 질문입니다
Loader LoadJson<Loader,Key,Value>(string path) where Loader : ILoader<Key,Value> { TextAsset textAsset = Managers.Resource.Load<TextAsset>($"Data/{path}"); return JsonUtility.FromJson<Loader>(textAsset.text); } 여기서 Loader << 이 부분이 헷갈려서 몇가지 질문 남깁니다. 1. Loader라는 타입을 따로 정의하지 않았는데, 이게 제네릭메소드 T 와 같은 의미이며, Loader라고 정의한거는 그냥 보기 편하게 T 를 Loader라고사용했다 보면 되는건가요 ? 2. LoadJson<Loader,Key,Value> 에서 Loader가 무슨의미인지 모르겠습니다. Loader에 대한 정보가 없으니, 정보를 얻기 위해 그냥 단순 : ILoader<Key,Value>를 상속받는 클래스를 저기에 입력하라는 의미로 받아드리면 될까요 ?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
NULL오류가 나타났는데 디버그능력을 어떤식으로 키워야할까요?
하이러키상에서는 scoreText로 만들었는데 UI_Button.cs에서 enum으로 ScoreText를, Start문에서 Get<Text>((int)Texts.ScoreText).text = "Bind Test"; 로 scoreText를 대소문자 잘못적는 실수를해서 NULL오류가 나왔는데요, 이 NULL값을 디버그모드로 찾아보려다가 찾는방법을 잘 몰라서 일일히 비교해보고 문제점을 발견했습니다. 구체적으로는 Start에 중단점걸고 f10으로 넘기면서 확인했는데 Get<Text>((int)Texts.ScoreText).text = "Bind Test"; 이부분에서 f10으로 넘어갈때 Null오류가 뜬다는것만 확인했지만 대소문자 오류인지를 몰라서 헤매다보니 이부분에서 문제를 어떻게 확인해야할지, 뭐가문제인지 감이 안잡히는거 같습니다. NULL값을 찾기위해 디버그모드를 사용하려해도 저가 디버그를 다뤄본적이 너무 부족하다고 느낀 바 어떤식으로 이것을 학습해서 능력을 키워야할지 길을 제시해주셨음 합니다 디버그강의를 다시봐야할까요? 중단점을 찍는 위치부터 null값이 어디에떠서 문제가생기는지를 파악할수있는 디버그를 하는능력을 기르고싶습니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
데미지 처리
데미지 처리 방법에 세가지가 있다고 하셨는데, 전투 매니저를 제외하고 처음 말씀하신 방법은 객체의 변수들을 직접적으로 변경해준다는 의미이고, 두번째로 말씀하신 방법은 객체의 함수를 호출해서 처리를 해준다는 의미로 이해하는게 맞을까요? 그러면 실습에서는 간단하게 Stat을 통해 처리해주기 때문에 첫번째 말씀하신 방법이 되겠네요
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Extension Method를 통해 사용한 AddUIEvent 함수의 인자 질문
안녕하세요 강의 14분의 GetButton((int)Buttons.PointButton).gameObject.AddUIEvent(OnButtonClicked);와 관련해 문의드립니다. 해당 코드의 AddUIEvent() 함수에 인자로 들어간OnButtionClicked는 public void OnButtonClicked(PointerEventData data) { ++_score; } 형태를 갖고 있습니다. AddUIEvent() 함수는 GameObject, Action<PointerEventData>, Define.UIEvent 자료형을 인자를 받아야 합니다. 여기서 첫번째 인자는 Extension Method 기능으로, 세번째 인자는 default 값으로 처리되었습니다. 두 번째 인자로 사용된OnButtionClicked 함수의 원형을 보면 매개변수로 PointerEventData 자료형의 값을 받아야 하지만 여기서는 단순히 함수명만 적었음에도 오류가 발생하지 않습니다. 이 이유는 AddUIEvent 함수를 통해 OnPonterClick()에서 OnClickHander.Invoke(eventData)로 PointerEventData를 보내주고 있으니 알아서 처리되는 것인가요? 감사합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
문법 질문
1. 강의 3:40 ~ 3:46 정도에 뱉어준다는 말씀을 하셨는데 여기서 어떤 부분이 반환을 안내하는지 알려주실 수 있나요? 2. ??도 알려주시면 감사하겠습니다
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
데이타 변환
그렇다면 만약 rpg겜 만들때 액셀파일에 해당 레벨업에 따른 스탯관련 데이터를 가지고있다가 json파일로 나오게끔 파싱을 하는 프로그램을 또 만들면 되는건가요? 혹시 파싱하는 프로그램이 있을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
버그관련
Unitychan 과 monster의 collider가 맞닿았을때 물리연산으로 인해 유니티짱이 한쪽 방향으로 계속 움직이는 버그가 있습니다 이럴때는 어떻게 해야 하나요? (부딛힘) (특정방향으로 일정한 속도로 계속 움직인다)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
사용 이유
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Resource 매니저를 사용하는게 코드를 관리하는데 용이 하다 하셨는데 관리가 용이해진다라는게 정확히 어떤건지 모르겠습니다. lapping을 함으로써 얻는 이점이 정확히 무엇인가요??
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
룰 타일도 소개해주시나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 룰 타일에 대해서도 다뤄주시나요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
InputManager 활용 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. InputManager를 만든 이유가 모든 Input을 제어하기 위해 만든 거라고 하셨는데 나중에 PlayerController말고 다른 스크립트에서도 OnKeyboard()를 만들고 delegate 체인에 추가해서 사용하는 건가요? 아니면 PlayerController의 Onkeyboard() key제어문을 추가하는 건지 궁금합니다! + public event Action KeyAction = null; 이렇게 이벤트로 바꿔서 사용하는건 어떻게 생각하시는지 알고 싶습니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
NavMeshAgent를 코드에서 불러올수가 없습니다
NavMeshAgent를 플레이어에 붙였는데 코드상에서 불러올 수가 없네요 (그런데 안불러와도 동작을 알아서 해주는것 같네요)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
단위 벡터에 대한 질문입니다
단위 벡터란 벡터 값이 1인 벡터이며 방향을 나타내기 위해 사용한다고 하셨는데 그렇다면 사물이 일직선으로 있는게 아닌 x, y, z 값이 전부 다를 경우 단위 벡터 값이 "최대" 1인 벡터 값으로 나타낼 수 있는게 맞는건가요? 이 경우 x 축 방향으로 0.87, y 축 방향으로 0.34, z축 방향으로 0.34의 방향 값을 가지고 있으며 5.7 만큼의 거리 값으로 이동한다는 의미가 맞는지 궁금합니다. 아니라면 단위 벡터는 무조건 벡터값이 1 0 0 / 0 1 0 이렇게만 나와야 하는건가요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
안떠요..
유니티 코드 작업할 때 옆에 솔루션 탐색기에 파일들도 안뜨고 저런 GameObject라던가 .찍으면 원래 저런거 뜨는데 안떠요ㅠ
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
GameObject와 같이 Object를 상속받은 친구들은 new가 가능하고
AudioSource같이 Component를 상속받은 친구들은 new로 생성하는 것이 불가능한 건가요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UI_Inven_item 이름 변경할때 BIND에서 FAILED TO BIND 디버그가 뜹니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문 강의 내에 UI INVEN ITEM의 이름을 변경하기 위한 CS 파일인데 이걸 실행하면 요. FAILED TO BIND가 뜹니다 바인드의 디버그 로그가 뜨는데 UI_INVEN 생성에서는 바인드 디버그 오류 없이 잘 나왔는데 왜 인벤 아이템은 바인드 자체가 안되는지 모르갰습니다..
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
시작시 @Sound가 생성안되고있습니다.
NullReferenceException: Object reference not set to an instance of an object SoundManager.Play (Define+Sound type, System.String path, System.Single pitch) (at Assets/Scripts/Managers/SoundManager.cs:64) TestSound.OnTriggerEnter (UnityEngine.Collider other) (at Assets/Scripts/TestSound.cs:29) 에러가 발생합니다. DontDestoryOnLoad에는 @Sound가 없고, @Manager만 있습니다. 현재 사운드 매니저는 public class SoundManager { AudioSource[] _audioSources = new AudioSource[(int)Define.Sound.MaxCount]; //MP3 Player -> AudioSource //MP3 음원 -> AudioClip //관객(귀) -> AudioListner public void Init() { GameObject root= GameObject.Find("@Sound"); if(root = null) { root = new GameObject { name = "@Sound" }; Object.DontDestroyOnLoad(root); string[] soundNames = System.Enum.GetNames(typeof(Define.Sound)); for(int i = 0; i<soundNames.Length -1; i++) { GameObject go = new GameObject { name = soundNames[i] }; _audioSources[i] = go.AddComponent<AudioSource>(); go.transform.parent = root.transform; } _audioSources[(int)Define.Sound.Bgm].loop = true; } } public void Play(Define.Sound type,string path, float pitch = 1.0f) { if (path.Contains("Sounds/") == false) path = $"Sounds/{path}"; if (type == Define.Sound.Bgm) { AudioClip audioClip = Managers.Resource.Load<AudioClip>(path); if(audioClip == null) { Debug.Log($"AudioClip Missing !: {path}"); return; } //ToDo } else { AudioClip audioClip = Managers.Resource.Load<AudioClip>(path); if(audioClip == null) { Debug.Log($"AudioClip Missing ! : {path}"); return; } AudioSource audioSource = _audioSources[(int)Define.Sound.Effect]; audioSource.pitch = pitch; audioSource.PlayOneShot(audioClip); } }이고, Managers 스크립트는 public class Managers : MonoBehaviour { static Managers s_Instance; // 유일성이 보장 static Managers Instance { get { Init(); return s_Instance; } }//유일한 매니저를 갖고온다. InputManager _input = new InputManager(); ResourceManager _resource = new ResourceManager(); SceneManagerEx _scene = new SceneManagerEx(); SoundManager _sound = new SoundManager(); UIManager _ui = new UIManager(); public static InputManager Input { get { return Instance._input; } } public static ResourceManager Resource { get { return Instance._resource; } } public static SceneManagerEx Scene { get { return Instance._scene; } } public static SoundManager Sound { get { return Instance._sound; } } public static UIManager UI { get { return Instance._ui; } } void Start() { Init(); } void Update() { _input.OnUpdate(); } static void Init() { if(s_Instance == null) { GameObject go = GameObject.Find("@Managers"); if(go== null) { go = new GameObject { name = "@Managers" }; go.AddComponent<Managers>(); } DontDestroyOnLoad(go); s_Instance = go.GetComponent<Managers>(); s_Instance._sound.Init(); } //초기화 } }입니다. 몇번 뒤져봐도 뭐가 잘못된지 모르겠습니다... 도와주세요!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
transform으로 바로 자식에 접근
위에걸 풀어 쓰자면 밑에거와 같은거 같은데, gridPanel.transform 에서 바로 자식들에 접근하는 원리를 잘 모르겠습니다 ㅠ