묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[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#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
트리구현연습 강의 질문있어요
public List<TreeNode<T>> Children { get; set; } = new List<TreeNode<T>>(); 이 부분에서 {get; set;} 프로퍼티를 사용하셨는데, 왜 사용된건지 생각해봐도 모르겠습니다.
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
섹션2 - Tilemap 강의에서 BaseMap 프리팹에 Front_01 용도가 궁금합니다.
섹션2 - Tilemap 강의에서 BaseMap 프리팹에 Front_01은 어떤 이유로 필요한건지 알 수 있을까요?Front_01 온/오프를 해봐도 큰 변화는 보이지 않아서관리의 목적이나 개발의 용이성등의 이유가 있을 것 같은데궁금합니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
Level Data 이후 영상 540p 송출
이번에 올라온 'Level Data ~기타 레벨 디자인 및 오류 수정' 강의 영상 대부분이 540p의 저해상도로 송출되는데 확인 부탁드립니다.
-
미해결[Unity] 함께 만들어가는 방치형 게임 개발
Level Data 영상 무한 로딩
안녕하세요 레벨데이타 영상이 무한 로딩 걸립니다 확인 부탁드립니다
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
안녕하세요 질문있습니다
안녕하세요 로딩도 만드신다고 햇는데 혹시 로비창도 강의 있나요??
-
해결됨[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
Session Send 멀티스레드 관련
안녕하세요 Session쪽 Send 만들어 보고 있습니다.구현하면서 궁금한게 Send에서 lock을 잡고 RegisterSend쪽에서는 lock을 잡지 않는 상황인데RegisterSend에서 하나의 스레드가 들어와서 while문을 돌면서 sendQueue를 Dequeue하고 있는데 이 과정에서 다른 스레드가 Send에서 sendQueue Enqueue를 할 수 있지 않나 생각이 듭니다. 그래서 RegisterSend에서 적어도 while문에는 lock을 걸어줘야 공유자원 _sendQueue에 대해서 안전하게 처리 될 수 있지 않나라고 생각 하는데 만약 안전하다면 왜 안전한지에 대해서 듣고 싶습니다.감사합니다!
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
강의 영상 화질과 관련해서 문의 드립니다.
안녕하세요.강의 영상 화질과 관련해서 문의 드립니다.강의 영상 중에섹션2 클라이언트 시스템 구현근접 공격영상부터 FHD에서도 강의 영상이 조금 흐리게 보이는 현상이 있습니다.(Render Texture 강의는 괜찮습니다!)근접 공격 이전 강의인 방치형 레벨업 버튼 강의와 바로 비교가 됩니다.확인 부탁 드립니다.감사합니다!
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
ui 아이콘과 엑셀 데이터 가 누락된거같습니다
안녕하세요, 강의 내용에 대해 몇 가지 여쭤보고 싶은 점이 있습니다.먼저, 강의 자료 중 하트 아이콘과 플러스 아이콘 , 엑셀데이터 등 몇 개가 보이지 않는 것 같아요. 혹시 제가 놓친 부분이 있는지, 아니면 자료를 다시 한번 확인해 주실 수 있을까요?그리고 강의 중 유튜브 영상이 재생되어 오디오가 중복되는 경우가 있었어요. 집중해서 들을 수 있도록 이 부분을 조정해 주시면 정말 감사하겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
리플렉션을 써야하는 이ㅠ
리플렉션을 써야하는 이유를 잘 모르겠습니다.리플렉션은 가능하면 지양하는게 좋다고 알고 있습니다. 런타임일반화하는 특성상 성능이 떨어질 수 밖에 없다고 알고 있습니다.그래서 아래과 같이 작성해 보았는데, 이건 어떠신가요?가독성 때문에 이렇게 작성하신것 같다는 생각도 들긴하는데 아직 충분히 의문이 해소되질 않네요
-
해결됨[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
SocketAsyncEventArgs Pooling
안녕하세요 강의 참고하면서 서버 만들어 보고 있는데 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이 넘기 전까지는 메모리에 계속 남아 있으니 먼가 찜찜합니다.이런 문제가 있는데 좋은 해결책이 있을까요?감사합니다!
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
패킷 형식 질문입니다.
WebPacket코드를 살펴보면Server의 WebPacket은 프로퍼티를 통해 변수를 작성하였고Client의 WebPacket은 일반 변수를 사용하였는데둘다 프로퍼티 또는 일반 변수로 통일하지 않은 이유를 알 수 있을까요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
JobQueue의 Push함수 관련 질문 있습니다.
안녕하세요. 강의 정말 잘 보고 있습니다. JobQueue의 Push 함수를 호출하는 스레드가 Action까지 처리하게 되는데, 이는 Push를 호출하는 시점부터 해당 Queue에 모든 Job이 비워질 때까지 Caller가 Blocked 됩니다. 이를 JobQueue의 Pop과 Action.Invoke를 담당하는 스레드를 하나 만들고, 백그라운드에서 폴링하는 방식으로 만들려 합니다. 즉, Push를 호출한 스레드를 사용할 지, 미리 스레드를 만들어두고 폴링하는 방식으로 사용할 지의 차이인 것 같습니다. 두 방식 중 어느 방식이 나을지 알고 싶습니다. 감사합니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
오브젝트 풀링
안녕하세요 오늘부터 수강 시작했는데 좋은 강의 감사합니다 Spawner에서 var goObj =Base_Mng .Pool.Pooling_OBJ("Monster").Get((value) =>{value. ''''''''value.'''''''''value.''''''''});여기서 Get 다음에 value 가 헷갈립니다 ...일회성 함수 만들어서 실행하고 끝인지 ..정확하게 모르겠네요 액션 인데 저게 어떤 의미인지 대충은 알겠는데.. 이해가 안됩니다 ㅠ 다른부분은 자세하게 설명해주셨는데 이부분만 부탁드립니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Rider vs Visual Studio
강의 로드맵 전체 수강중입니다.Visual Studio 로 진행하셨는데 Rider 구매하려고 해서, Rider로 진행해도 따라가는데 문제 없을까요?
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
인디게임출시경험이 중요할까요?
국비 교육과정을 마치고 OJT기간이 끝났는데 OJT를 진행한 회사에서 회사와 협업해서 팀을 이루어 인디게임을 출시해보겠냐는 제안을 받았습니다.신입이고 리소스는 회사에서 지원받는데 해보는게 좋을까요? 아님 개인 포트폴리오로 취업을 하는게 좋을까요?
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
InGame 씬 배경 화면이 나오지 않아요
안녕하세요InGame 씬 진입 및 페이드 처리는 잘 진행되었는데,Fade처리 이후 배경 화면이 검게 나옵니다.혹시 강사님 화면처럼 푸른색 배경이 나오게 하려면 어떻게 해야 할까요?
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
어드레서블 Sprite 관련해서 질문이있습니다.
안녕하세요개인 프로젝트에 적용하는 과정에서 문제가 발생해서 질문드립니다. 제 스프라이트 중 하나가 SpriteMode가 Multiple로 설정되어 있어서, 해당 스프라이트를 리소스매니저 Get호출할 때 아래와 같은 오류가 발생하고 있습니다. System.Exception: Unable to load asset of type UnityEngine.Sprite from location Assets/03.Resources/Sprites/UI/Game_Main/ico_misc 1.png[ico_misc 1].UnityEngine.ResourceManagement.Util.DelayedActionManager:LateUpdate () (at ./Library/PackageCache/com.unity.addressables@1.21.21/Runtime/ResourceManager/Util/DelayedActionManager.cs:162) 이 오류를 어떻게 해결할 수 있을까요??
-
미해결게임 디자인 패턴 with Unity
텍스트로 무기 교체 예제 UML
텍스트로 무기 교체 예제 코드를 UML로 표현하면 다음과 같을까요??
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
서버 에 관해 질문이있습니다!
1 .클라이언트-서버 방식클라이언트가 입력을 보내면 중앙서버 에서 로직(충돌,이동) 이런걸 처리하고 게임상태를 업데이트하고 클라이언트한테 보내주는 방식이있고p2p 방식p2p 방식으로 모든 클라이언트가 동등한 지위에서 서로 통신하는 구조로 알고있는대 여기서 질문이있습니다유니티랑 연동한다고 가정하였을때클라이언트 -서버 방식을 이용하게 되면 유니티에 내장 기능 (컴포넌트)등을 이용해 동기화는 못하게 될꺼같은대 서버단에서 충돌 처리하는 로직을 만들어서 사용해야만 하는지?p2p 방식은 그나마 유니티 내장 기능을 자유롭게 사용할수 있을꺼 같고 p2p 방식을 이용한다면 서버를 따로 구동하는 게 아닌 클라이언트단에서 서버를 구동하는것인가요?