inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

176만명의 커뮤니티!! 함께 토론해봐요.

헉!!! ㅠㅠㅠ 몰랐어요 구현하고 싶은거있었는데

해결됨

[Unity] 함께 만들어가는 방치형 게임 개발

안녕하세요 구현하고 싶은 스킬있는데 스킬 보다는 약간 시스템이긴합니다 헤헤 늦었겠죠 ?? 다음에는 꼼꼼하게 봐야 겠어요 ㅠㅠ 좋은강의 감사합니다

  • C#
  • unity
  • firebase
  • 게임기획
  • json-parsing
anhyeokjun 댓글 2 좋아요 0 조회수 245

typeof 와 GetType

미해결

[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)

DataTransformer.cs 에서 ParseExcelDataToList 함수 안에 typeof와 GetType을 혼용해서 사용하시는 것을 보고 궁금해서 찾아보다가 질문드립니다. typeof의 경우에 컴파일 타임에 형식의 메타 데이터를 참고해서 Type 형식을 뱉어주고 GetType의 경우에 인스턴스의 형식을 런타임에 가져오는 경우 사용하는 걸로 알고 있는데요. 위 함수에서 typeof(LoaderData)를 통해 Type을 가져오더라구요. 이 경우에 제네릭 타입 매개변수는 컴파일 시점에 정확한 형식을 모르기 때문에 GetType을 사용하는 것이 적절하지 않을까요?

  • C#
  • unity
  • MMORPG
활성산소 댓글 1 좋아요 0 조회수 250

버튼 클릭시 점수가 올라가지 않습니다.

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

using System; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class UI_Button : UI_Base { //[SerializeField] //TextMeshProUGUI _text; enum Buttons { PointButton } enum Texts { PointText, ScoreText, } enum GameObjects { TestObject, } enum Images { ItemIcon, } private void Start() { Bind<Button>(typeof(Buttons)); Bind<TextMeshProUGUI>(typeof(Texts)); Bind<GameObject>(typeof(GameObjects)); Bind<Image>(typeof(Images)); //Get<TextMeshProUGUI>((int)Texts.ScoreText).text = "Bind Test"; GetButton((int)Buttons.PointButton).gameObject.AddUIEvent(OnButtonClicked); GameObject go = GetImage((int)Images.ItemIcon).gameObject; AddUIEvent(go, (PointerEventData data) => { go.transform.position = data.position; },Define.UIEvnet.Drag); } int _score = 0; public void OnButtonClicked(PointerEventData data) { _score++; //_text.text = $"점수 : {_score}"; Get<TextMeshProUGUI>((int)Texts.ScoreText).text = $"점수 : {_score}"; } } using System; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEditor.SceneManagement; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class UI_Base : MonoBehaviour { Dictionary<Type, UnityEngine.Object[]> _objects = new Dictionary<Type, UnityEngine.Object[]>(); protected void Bind<T>(Type type) where T : UnityEngine.Object { string[] names = Enum.GetNames(type); UnityEngine.Object[] objects = new UnityEngine.Object[names.Length]; _objects.Add(typeof(T), objects); for (int i = 0; i < names.Length; i++) { if (typeof(T) == typeof(GameObject)) objects[i] = Util.FindChild(gameObject, names[i], true); else objects[i] = Util.FindChild<T>(gameObject, names[i], true); if (objects[i] == null) Debug.Log($"Failed to bind({names[i]})"); } } protected T Get<T>(int idx) where T : UnityEngine.Object { UnityEngine.Object[] objects = null; if (_objects.TryGetValue(typeof(T), out objects) == false) return null; return objects[idx] as T; } protected TextMeshProUGUI GetText(int idx) { return Get<TextMeshProUGUI>(idx); } protected Button GetButton(int idx) { return Get<Button>(idx); } protected Image GetImage(int idx) { return Get<Image>(idx); } public static void AddUIEvent(GameObject go, Action<PointerEventData>action,Define.UIEvnet type = Define.UIEvnet.Click) { UI_EventHandler evt = Util.GetOrAddComponent<UI_EventHandler>(go); switch(type) { case Define.UIEvnet.Click: evt.OnClickHandler -= action; evt.OnClickHandler += action; break; case Define.UIEvnet.Drag: evt.OnDragHandler -= action; evt.OnDragHandler += action; break; } //evt.OnDragHandler += ((PointerEventData data) => { evt.gameObject.transform.position = data.position; }); } } using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UIElements; public class UI_EventHandler : MonoBehaviour, IPointerClickHander ,IDragHandler { public Action<PointerEventData> OnClickHandler = null; public Action<PointerEventData> OnDragHandler = null; public void OnPointerClick(PointerEventData eventData) { if (OnClickHandler != null) OnClickHandler.Invoke(eventData); } public void OnDrag(PointerEventData eventData) { if (OnDragHandler != null) OnDragHandler.Invoke(eventData); } } 드래그작동은 잘 되는데, 버튼 클릭하면 점수가 올라가지 않습니다. UI_Button스크립트에 52번째줄, public void OnButtonClicked 부분에 중단점을 찍어 보기도 했고, UI_Base 스크립트의 switch문에 있는 Click과 Drag부분에도 해봤는데 어느부분이 문제가 있는지 찾지를 못했습니다. 제가 디버깅을 잘 못해서 이런건지..ㅠㅠ 다른 분들 질문과, 코드 정리 올려주신거 비교해봐도 틀린 부분이 없는거 같은데 무슨 문제인지 잘 모르겠습니다 ㅠㅠ

  • C#
  • unity
lover123e 댓글 1 좋아요 1 조회수 181

섹션2 - Tilemap 강의에서 BaseMap 프리팹에 Front_01 용도가 궁금합니다.

미해결

[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)

섹션2 - Tilemap 강의에서 BaseMap 프리팹에 Front_01은 어떤 이유로 필요한건지 알 수 있을까요? Front_01 온/오프를 해봐도 큰 변화는 보이지 않아서 관리의 목적이나 개발의 용이성등의 이유가 있을 것 같은데 궁금합니다.

  • C#
  • unity
  • MMORPG
devdev 댓글 1 좋아요 0 조회수 187

Skill의 Custom Action 중 Action의 유니티 버그 레포트

미해결

[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템

안녕하세요 강의 잘 보고 있습니다. 다름 아니라 Skill에 CustomAction의 Action 탭에서 Value값들을 바꿀려하면 유니티 버그 레포트가 나타나면서 유니티가 꺼지는 현상이 지속되고 있습니다. EX) Owner Or User를 Target으로 바꿀시 크래시... 다른 Cast나 Charge, Preceding 쪽에선 문제가 발견되지 않습니다. 스크립트상으론 강사님의 스크립트 그대로 가져와도 똑같은 문제가 발생하는 것 같은데 아님 혹시 제가 놓친 부분이 있나 싶어서 문의드립니다.

  • unity
  • modules
jkp8277 댓글 1 좋아요 0 조회수 169

Level Data 이후 영상 540p 송출

해결됨

[Unity] 함께 만들어가는 방치형 게임 개발

이번에 올라온 'Level Data ~기타 레벨 디자인 및 오류 수정' 강의 영상 대부분이 540p의 저해상도로 송출되는데 확인 부탁드립니다.

  • C#
  • unity
  • firebase
  • 게임기획
  • json-parsing
dunku 댓글 2 좋아요 0 조회수 162

Level Data 영상 무한 로딩

미해결

[Unity] 함께 만들어가는 방치형 게임 개발

안녕하세요 레벨데이타 영상이 무한 로딩 걸립니다 확인 부탁드립니다

  • C#
  • unity
  • firebase
  • 게임기획
  • json-parsing
anhyeokjun 댓글 2 좋아요 0 조회수 193

DQN 실행 오류

미해결

유니티 머신러닝 에이전트 완전정복 (기초편)

아래와 같이 에러가 발생하는데 원인을 못찾겠습니다. 도움 좀 부탁드립니다. github에 있는 DQN.py 를 실행하였습니다. 10 Episode / Step: 152 / Score: -0.34 / Loss: nan / Epsilon: 1.0000 20 Episode / Step: 332 / Score: -0.57 / Loss: nan / Epsilon: 1.0000 30 Episode / Step: 455 / Score: -0.51 / Loss: nan / Epsilon: 1.0000 40 Episode / Step: 754 / Score: 0.01 / Loss: nan / Epsilon: 1.0000 50 Episode / Step: 1010 / Score: 0.15 / Loss: nan / Epsilon: 1.0000 60 Episode / Step: 1169 / Score: 0.25 / Loss: nan / Epsilon: 1.0000 70 Episode / Step: 1376 / Score: 0.20 / Loss: nan / Epsilon: 1.0000 80 Episode / Step: 1616 / Score: -0.33 / Loss: nan / Epsilon: 1.0000 90 Episode / Step: 1863 / Score: -0.04 / Loss: nan / Epsilon: 1.0000 100 Episode / Step: 2091 / Score: -0.02 / Loss: nan / Epsilon: 1.0000 ... Save Model to ./saved_models/GridWorld/DQN/20240821214516/ckpt ... 110 Episode / Step: 2316 / Score: -0.12 / Loss: nan / Epsilon: 1.0000 120 Episode / Step: 2568 / Score: -0.34 / Loss: nan / Epsilon: 1.0000 130 Episode / Step: 2755 / Score: -0.78 / Loss: nan / Epsilon: 1.0000 140 Episode / Step: 2910 / Score: 0.06 / Loss: nan / Epsilon: 1.0000 150 Episode / Step: 3190 / Score: -0.27 / Loss: nan / Epsilon: 1.0000 160 Episode / Step: 3484 / Score: -0.48 / Loss: nan / Epsilon: 1.0000 170 Episode / Step: 3752 / Score: -0.56 / Loss: nan / Epsilon: 1.0000 180 Episode / Step: 3920 / Score: -0.76 / Loss: nan / Epsilon: 1.0000 190 Episode / Step: 4142 / Score: 0.19 / Loss: nan / Epsilon: 1.0000 200 Episode / Step: 4467 / Score: -0.42 / Loss: nan / Epsilon: 1.0000 ... Save Model to ./saved_models/GridWorld/DQN/20240821214516/ckpt ... 210 Episode / Step: 4771 / Score: -0.30 / Loss: nan / Epsilon: 1.0000 Traceback (most recent call last): File "/Users/neweins/Projects/project_unity/ml-agents/build/GridWorld/ref.py", line 224, in <module> loss = agent.train_model() File "/Users/neweins/Projects/project_unity/ml-agents/build/GridWorld/ref.py", line 141, in train_model q = (self.network(state) * one_hot_action).sum(1, keepdims=True) File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1553, in wrapped call_impl return self._call_impl(*args, **kwargs) File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1562, in call impl return forward_call(*args, **kwargs) File "/Users/neweins/Projects/project_unity/ml-agents/build/GridWorld/ref.py", line 83, in forward x = F.relu(self.conv1(x)) File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1553, in wrapped call_impl return self._call_impl(*args, **kwargs) File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1562, in call impl return forward_call(*args, **kwargs) File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/conv.py", line 458, in forward return self._conv_forward(input, self.weight, self.bias) File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/conv.py", line 454, in conv forward return F.conv2d(input, weight, bias, self.stride, RuntimeError: Given groups=1, weight of size [32, 6, 8, 8], expected input[32, 168, 3, 64] to have 6 channels, but got 168 channels instead

  • unity
  • 머신러닝
  • 강화학습
  • unity-ml-agents
JKLEE 댓글 2 좋아요 0 조회수 370

안녕하세요 질문있습니다

해결됨

[Unity] 함께 만들어가는 방치형 게임 개발

안녕하세요 로딩도 만드신다고 햇는데 혹시 로비창도 강의 있나요??

  • C#
  • unity
  • firebase
  • 게임기획
  • json-parsing
anhyeokjun 댓글 2 좋아요 0 조회수 245

Session Send 멀티스레드 관련

해결됨

[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)

안녕하세요 Session쪽 Send 만들어 보고 있습니다. 구현하면서 궁금한게 Send에서 lock을 잡고 RegisterSend쪽에서는 lock을 잡지 않는 상황인데 RegisterSend에서 하나의 스레드가 들어와서 while문을 돌면서 sendQueue를 Dequeue하고 있는데 이 과정에서 다른 스레드가 Send에서 sendQueue Enqueue를 할 수 있지 않나 생각이 듭니다. 그래서 RegisterSend에서 적어도 while문에는 lock을 걸어줘야 공유자원 _sendQueue에 대해서 안전하게 처리 될 수 있지 않나라고 생각 하는데 만약 안전하다면 왜 안전한지에 대해서 듣고 싶습니다. 감사합니다!

  • C#
  • unity
  • mysql
  • MMORPG
  • ef-core
  • asp.net-web-api
toyboy0113 댓글 1 좋아요 0 조회수 207

강의 영상 화질과 관련해서 문의 드립니다.

해결됨

[Unity] 함께 만들어가는 방치형 게임 개발

안녕하세요. 강의 영상 화질과 관련해서 문의 드립니다. 강의 영상 중에 섹션2 클라이언트 시스템 구현 근접 공격 영상부터 FHD에서도 강의 영상이 조금 흐리게 보이는 현상이 있습니다. (Render Texture 강의는 괜찮습니다!) 근접 공격 이전 강의인 방치형 레벨업 버튼 강의와 바로 비교가 됩니다. 확인 부탁 드립니다. 감사합니다!

  • C#
  • unity
  • firebase
  • 게임기획
  • json-parsing
Jae Hong Ju 댓글 2 좋아요 0 조회수 188

ui 아이콘과 엑셀 데이터 가 누락된거같습니다

해결됨

[Unity] 함께 만들어가는 방치형 게임 개발

안녕하세요, 강의 내용에 대해 몇 가지 여쭤보고 싶은 점이 있습니다. 먼저, 강의 자료 중 하트 아이콘과 플러스 아이콘 , 엑셀데이터 등 몇 개가 보이지 않는 것 같아요. 혹시 제가 놓친 부분이 있는지, 아니면 자료를 다시 한번 확인해 주실 수 있을까요? 그리고 강의 중 유튜브 영상이 재생되어 오디오가 중복되는 경우가 있었어요. 집중해서 들을 수 있도록 이 부분을 조정해 주시면 정말 감사하겠습니다.

  • C#
  • unity
  • firebase
  • 게임기획
  • json-parsing
THEPLACE 댓글 2 좋아요 0 조회수 275

리플렉션을 써야하는 이ㅠ

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

리플렉션을 써야하는 이유를 잘 모르겠습니다. 리플렉션은 가능하면 지양하는게 좋다고 알고 있습니다. 런타임일반화하는 특성상 성능이 떨어질 수 밖에 없다고 알고 있습니다. 그래서 아래과 같이 작성해 보았는데, 이건 어떠신가요? 가독성 때문에 이렇게 작성하신것 같다는 생각도 들긴하는데 아직 충분히 의문이 해소되질 않네요

  • C#
  • unity
1riberty 댓글 2 좋아요 1 조회수 559

SocketAsyncEventArgs Pooling

해결됨

[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)

안녕하세요 강의 참고하면서 서버 만들어 보고 있는데 https://learn.microsoft.com/ko-kr/dotnet/api/system.net.sockets.socketasynceventargs?view=net-8.0#remarks 해당 문서에서 pooling이 있더라구요 생각해보니 동접이 꽤 많다라고 가정하면(약 3000?) 이 SocketAsyncEventArgs 생성 소멸이 많이 일어난다고 생각했습니다. 그래서 pooling을 한번 만들어보고 있는데 만드는 중에 Dispose를 언제 해줘야 할지 감이 잘 안옵니다. 현재는 Client가 Disconnect될 때 Push하게 되는데 Push에서 poolCount가 3000이 넘으면 이걸 AllClear라는걸로 pool에 있는 SocketAsyncEventArgs를 다 Dispose해주는 상황인데 이렇게하면 3000이 넘기 전까지는 메모리에 계속 남아 있으니 먼가 찜찜합니다. 이런 문제가 있는데 좋은 해결책이 있을까요? 감사합니다!

  • C#
  • unity
  • mysql
  • MMORPG
  • ef-core
  • asp.net-web-api
toyboy0113 댓글 1 좋아요 0 조회수 197

패킷 형식 질문입니다.

미해결

[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)

WebPacket코드를 살펴보면 Server의 WebPacket은 프로퍼티를 통해 변수를 작성하였고 Client의 WebPacket은 일반 변수를 사용하였는데 둘다 프로퍼티 또는 일반 변수로 통일하지 않은 이유를 알 수 있을까요?

  • C#
  • unity
  • MMORPG
taeki2307 댓글 1 좋아요 0 조회수 176

JobQueue의 Push함수 관련 질문 있습니다.

해결됨

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

안녕하세요. 강의 정말 잘 보고 있습니다. JobQueue의 Push 함수를 호출하는 스레드가 Action까지 처리하게 되는데, 이는 Push를 호출하는 시점부터 해당 Queue에 모든 Job이 비워질 때까지 Caller가 Blocked 됩니다. 이를 JobQueue의 Pop과 Action.Invoke를 담당하는 스레드를 하나 만들고, 백그라운드에서 폴링하는 방식으로 만들려 합니다. 즉, Push를 호출한 스레드를 사용할 지, 미리 스레드를 만들어두고 폴링하는 방식으로 사용할 지의 차이인 것 같습니다. 두 방식 중 어느 방식이 나을지 알고 싶습니다. 감사합니다.

  • C#
  • unity
  • 네트워크
Kosh PaE 댓글 1 좋아요 0 조회수 164

ML-Agents 살펴보기 11페이지 질문입니다.

미해결

유니티 머신러닝 에이전트 완전정복 (기초편)

inference Device 타입이 default, GPU, Burst, CPU 4가지로 말씀주셨습니다. 제가 공부하는 PC환경은 mac인데 default, computer shader, burst, pixel shader로 타입이 보입니다. 왜 차이가 나는지와 각 타입의 의미를 알 수 있을까요?

  • unity
  • 머신러닝
  • 강화학습
  • unity-ml-agents
JKLEE 댓글 1 좋아요 0 조회수 273

오브젝트 풀링

해결됨

[Unity] 함께 만들어가는 방치형 게임 개발

안녕하세요 오늘부터 수강 시작했는데 좋은 강의 감사합니다 Spawner에서 var goObj =Base_Mng .Pool.Pooling_OBJ("Monster") .Get((value) => { value. '''''''' value.''''''''' value.'''''''' }); 여기서 Get 다음에 value 가 헷갈립니다 ...일회성 함수 만들어서 실행하고 끝인지 ..정확하게 모르겠네요 액션 인데 저게 어떤 의미인지 대충은 알겠는데.. 이해가 안됩니다 ㅠ 다른부분은 자세하게 설명해주셨는데 이부분만 부탁드립니다

  • C#
  • unity
  • firebase
  • 게임기획
  • json-parsing
anhyeokjun 댓글 1 좋아요 0 조회수 356

코드 분석하면서 강의 복습중인데 질문 있습니다!

미해결

[실전 게임 코드 리뷰] 유니티 클리커 게임

안녕하세요. 저만의 게임을 완성해본적이 한번도 없어서 이번에는 꼭 완성하고 출시까지 가고싶어서 강사님 코드를 분석중에 있습니다. 문득 궁금한 점이 생겼는데요, 초심자 입장에서 코드를 다 짜고 나서 리팩토링을 하는 편이 나을지 아니면 처음부터 감안하고 강사님처럼 폴더랑 스크립트를 최대한 단일책임원칙에 입각해서 나누는게 좋을지 고민입니다. 후자가 이상적이라고 생각은 드는데, 아직 초심자다보니 선뜻 손이 안가는 문제가 있습니다. - 혹시 강사님께서는 앤트 컴퍼니정도 규모의 게임을 만드실 때 코드를 애초부터 분할해서 작성하셨나요...? - 강사님이 초심자이실 때는 어떻게 하셨는지, 지금 현실적으로 어떻게 하기를 권장하실지도 궁금합니다.

  • unity
반숙이 댓글 1 좋아요 0 조회수 263

Rider vs Visual Studio

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

강의 로드맵 전체 수강중입니다. Visual Studio 로 진행하셨는데 Rider 구매하려고 해서, Rider로 진행해도 따라가는데 문제 없을까요?

  • C#
  • unity
  • 네트워크
  • ide
  • vs
ehddnjs5861 댓글 1 좋아요 0 조회수 384

인기 태그

인프런 TOP Writers

주간 인기글