inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

매니저 옆에 Ex는 무슨 뜻인가요?

미해결

[실전 게임 코드 리뷰] 유니티 캐주얼 게임 (엘리스팡)

GameManagerEx , SceneManagerEx 별로 중요한 내용은 아닌 것 같지만 궁금합니다.

  • C#
  • unity
gya9877 댓글 1 좋아요 1 조회수 392

강의 내용을 정리해서 블로그에 포스팅해도 괜찮을까요?

해결됨

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문

최근에 강의를 구매하고 수강하며 강의 내용들을 필기하고 있는데, 혹시 괜찮으시다면 개인적으로 필요한 부분들을 정리해서 출처를 밝히며 블로그에 기록해도 괜찮을까요?

  • C#
  • unity
댓글 1 좋아요 0 조회수 708

드래그 블록 배치 판정 및 배치 강의 관련 질문드립니다.

해결됨

따라하면서 배우는 고박사의 유니티 하이퍼캐주얼게임 시리즈 02

안녕하세요 고박사님. 유튜브와 인프런을 통해 강의 잘 듣고 있습니다! 질문 드리고 싶은 부분은 "드래그 블록 배치 판정 및 배치" 강의에서 1분44초 즈음 // 현재 위치에 이미 다른 블록이 배치되어 있는지 ? if( !IsOtherBlockInThisBlock(position) ) return false; 저는 저 함수명을 보고 position에 해당하는 블록에 다른 블록이 존재한다면 true를 반환시키는 것으로 함수해석을 하였는데 강의를 되돌려보니 블록이 비어 있다면 true로 주석이 있는것을 확인하였습니다. 사소한 질문일 수 있지만 충분히 고민해보아도 이해가 잘 되지 않아 올바른 해석법이나 추가설명 부탁드리겠습니다..! 감사합니다.

  • C#
  • unity
야채 댓글 1 좋아요 0 조회수 317

Packet Generator#2 string부분

미해결

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

안녕하세요 이 부분까지는 실행이 잘되는 것을 확인하였습니다. 그 뒤에 PacketFormat 부분에서실행시키면 아래와 같이 string부분은 입력이 안됩니다. 제 코드에서 틀린부분을 못찾겠어서 선생님이 올려주신 정답 코드로 다시 실행을 해보았는데 똑같이 string부분이 입력이 안되는데 혹시 어떤 부분이 잘못되었는지 알려주실 수 있으실까요? class PlayerInfoReq { public long playerId; public void Read(ArraySegment<byte> openSegment) { ushort count = 0; ReadOnlySpan<byte> s = new ReadOnlySpan<byte>(openSegment.Array, openSegment.Offset, openSegment.Count); count += sizeof(ushort); count += sizeof(ushort); this. playerId = BitConverter.ToInt64(s.Slice(count, s.Length - count)); count += sizeof(long); } public ArraySegment<byte> Write() { ArraySegment<byte> segement = SendBufferHandler.Open(4096); bool success = true; ushort count = 0; Span<byte> s = new Span<byte>(segement.Array, segement.Offset, segement.Count); count += sizeof(ushort); success &= BitConverter.TryWriteBytes(s.Slice(count,s.Length-count), (ushort)PacketID.PlayerInfoReq); count += sizeof(ushort); success &= BitConverter.TryWriteBytes(s.Slice(count, s.Length - count), this. playerId); count += sizeof(long); success &= BitConverter.TryWriteBytes(s, count); if (success == false) return null; return SendBufferHandler.Close(count); } }

  • C#
  • unity
  • 네트워크
디맂 댓글 1 좋아요 0 조회수 342

스크립트 변수명, 함수명 등 바꿀 때 팁이라고 해야할까요?

해결됨

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

중복이면 죄송합니다. 바꾸실 이름에 커서를 두고 Ctrl + R(두번)을 누르시면 이름 바꾸기가 나오는데 바꾸실 이름을 입력하고 엔터를 누르시면 참조되어 있는 것들 싹다 변경됩니다.

  • C#
  • unity
Hoeya 댓글 1 좋아요 2 조회수 459

Create()에 대해 궁금한 부분이 있습니다

해결됨

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

복습 중 아리까리한 부분이 있어서 질문드립니다. // 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#
  • unity
물주먹고양이 댓글 1 좋아요 0 조회수 300

UI 자동화 장점

미해결

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

예전에 회사에서 유니티로 어플을 만들 때 버튼 클릭할 때 나오는 사운드를 BUTTON 컴포넌트에 함수로 매핑을 해준 적이 있었습니다. 드래그앤드롭으로 인스펙터창에 붙였었는데, 유지보수 측면에서 함수의 이름을 바꿔야할 상황이 왔었는데 함수 이름을 바꾸니 제가 프로젝트의 버튼에 매핑 시켰던 모든 버튼 클릭 함수가 Missing이 떴었습니다. 이 때, 루키스님의 UI 자동화의 장점을 뼈저리게 느꼈었는데 혹시 이런 상황 말고도 루키스님이 자주 쓰시고 저희에게 가르쳐주신 UI 자동화만의 장점이 있을 까요?? 단점도 궁금합니다(아마 단점은 하나의 Scene에서 게임 오브젝트의 이름이 같은 게 2개 이상 있으면 정상 동작하지 않는다 인 것 같은데 맞을까요? 그 외의 단점도 궁금합니다!!)

  • C#
  • unity
자르트 댓글 1 좋아요 0 조회수 683

유니티 vscode 연결

미해결

C#과 유니티, 실전 게임으로 제대로 시작하기 (저자 직강)

유니티에서 external code editor 선택하는 창에서 vscode가 뜨지 않았습니다. 그래서 browse를 통해 선택해주었는데요. 그리고 스크립트를 실행해보니 External Code Editor application path does not exist 라는 문구와 함께 에러가 발생하고 monobehavior도 초록색으로 바뀌지 않으며 정상적으로 연결이 되지 않는 것 같습니다. 이걸로 몇 시간동안 끙끙댔는데 진전이 없네요;; 도움이 필요합니다.

  • C#
  • unity
  • vscode
andol0629 댓글 1 좋아요 0 조회수 1914

해당 강좌 내용을 PC게임 제작에 접목해도 괜찮을까요?

해결됨

[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작

강의 내용이 모바일 플랫폼을 기준으로 하고 있는데 이 내용을 pc게임에 적용해도 괜찮을지 궁금합니다

  • C#
  • unity
  • pc
  • 모바일
AsoSA 댓글 1 좋아요 0 조회수 597

옵저버 패턴을 잘 모르겠습니다

미해결

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

구글에 찾아보니 설명이 옵저버패턴이란 객체 의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴입니다. 이라고 되어있는데 이번수업에서의 경우엔 객체 가UI_EventHandler이고 옵저버가UI_Button인건가요? 또한, Action이 여러 함수포인터를 저장해놓고 Invoke를 호출할때마다 저장된 함수포인터들을 전부다 사용하는것이라고 이해해도 되는걸까요?

  • C#
  • unity
이호진 댓글 1 좋아요 0 조회수 391

start문에 디버깅을찍어도 안들어갑니다.

미해결

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

혹시 짐작가는 부분이있으실까요? 코드는 영상보며 여러번체크해서 다른점은 없는것같습니다.. 이렇게 그냥 단순 디버그문을 만들어서 찍어도 브레이크포인트에 안걸리고 그냥 실행이되네요

  • C#
  • unity
이호진 댓글 1 좋아요 0 조회수 348

Quaternion.Slerp 적용하면 유니티 짱이 20~30도 쓰러져요.

미해결

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

화면 클릭해서 이동시 transform.LookAt(_destPos); 위 코드 대신 부드럽게 회전하기 -- 아래 코드로 하면 마지막 멈출때 유니티 짱이 쓰러짐. ㅜㅜ transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(dir), 5 * Time.deltaTime); //t는 회전 속도 trasform.LookAt(_destPos)일때는 쓰러지지 않습니다.

  • C#
  • unity
prokimssam 댓글 2 좋아요 0 조회수 1123

UnityChan이 Cube를 몇번 튕긴 후 Cube를통과합니다.

해결됨

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

충돌 테스트에서 UnityChan이 Plane이나 Cube에 퉁기기는 하지만, 여러번 충돌하면 결국 통과합니다. 통과 못 하도록 막을 수 없나요?

  • C#
  • unity
  • rigidbody
  • 충돌
  • 통과
prokimssam 댓글 1 좋아요 0 조회수 447

Serialization #3 this.name

미해결

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

안녕하세요! 강의를 수강하다가 질문이 생겨서 글 남깁니다. Serialization #3[08:30] name = "ABCD"의 문자열의 길이는 4이지만 byte배열로 변환하면 길이가 4byte가 아니라 8byte가 되는 것 까지는 이해하였습니다. 왜냐하면 C#은 UTF-16을 사용하므로 UTF-16은 문자들이 각 2Byte이기 때문입니다. Encoding.Unicode.GetByteCount( this.name )에서 UTF-16기준으로의 바이트 배열로 변환됐을 때의 수를 가져오는 것이니까 그러면 위와 같이 8Byte인 것 같아서 어떻게 4Byte인지 궁금증이 생겨 질문 남깁니다!

  • C#
  • unity
  • 네트워크
디맂 댓글 1 좋아요 0 조회수 250

ADO.NET 엔터티 데이터 모델이 없어요

해결됨

14일만에 배우는 ASP.NET CORE

.net core 3.1 버전이고 VS2022 사용하고 있습니다. New item 항목에 ado.net 엔터티 데이터 모델 플랫폼이 없네요. installer에서 EF 6 도구와 .NET Framework 프로젝트 및 항목 템플릿 둘 다 체크되어 있습니다.

  • C#
  • .net
황민준 댓글 1 좋아요 0 조회수 649

구독에관해 질문있습니다.

해결됨

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

Managers.Input.MouseAction -=OnMouseClicked Managers.Input.MouseAction +=OnMouseClicked 가 PlayerController안에 있는데 PlayerController가 여러게임 오브젝트에 붙어있을경우 -=OnMouseClicked로 먼저 제거한후 +=OnMouseCliked로 구독하니까 여러 오브젝트중 하나만 움직여야 한다고 생각했는데 그렇지 않아서 질문합니다. MouseAction에는 같은 이름의 OnMouseClicked를 추가하더라도 각 오브젝트마다 각각 다른 OnMouseClicked로 관리되나요?

  • C#
  • unity
이호진 댓글 1 좋아요 1 조회수 375

Send lock 관련 질문

미해결

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

public void Send(byte[] sendBuff) { lock (_lock) { _sendQueue.Enqueue(sendBuff); if (_pendingList.Count == 0) RegisterSend(); } } void OnSendCompleted(object sender, SocketAsyncEventArgs args) { lock (_lock) { if (args.BytesTransferred > 0 && args.SocketError == SocketError.Success) { try { _sendArgs.BufferList = null; _pendingList.Clear(); // Doing if (_sendQueue.Count > 0) RegisterSend(); } catch (Exception e) { Console.WriteLine($"OnSendCompleted Failed {e}"); } } } } 수업을 들으면서 Send와 OnSendCompleted에 lock이 서로 다른 두개이상의 쓰레드가 동시에 sendQueue, pendingList에 Write하는 것을 방지하는 것이라고 이해했습니다. 그리고 Send의 if문이 다른 쓰레드가 전송중일때를 체크하는 것이라고 들었는데 저 2개의 lock구조에서, 쓰레드A가 OnSendCompleted의 lock구역안에 있을 때 쓰레드B가 Send의 lock구역에 진입이 가능한지 궁금합니다. 만약 접근이 안된다면 pendingList.Count가 항상 0이 되지않을까 생각하고 있습니다.

  • C#
  • unity
  • 네트워크
  • session
  • lock
이정석 댓글 1 좋아요 0 조회수 430

유저컨트롤 관련 질문

미해결

WPF (.NET Core, C#, 자막제공)

안녕하세요 강의를 보면서 WPF 프로젝트를 진행중인데요 유저컨트롤에서 제가 만든 속성값을 만들고 추가한곳에서 xaml에서 접근하면 "멤버를 인식할 수 없거나 액서스할 수 없습니다." 이런 오류가 발생합니다. mainWindow 유저컨트롤 개발환경은 VS2015입니다.

  • C#
  • wpf
  • usercontrol
pcdept 댓글 2 좋아요 0 조회수 847

섹션 8.Scene SceneManager(1) 관련하여 질문이 있습니다

해결됨

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

강의 영상 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#
  • unity
강승연 댓글 1 좋아요 0 조회수 292

Managers 질문

미해결

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

안녕하세요. 선생님께서 말씀해주신 내용에서 궁금한 점이 있어서 두 가지 질문 드립니다. 1:00 강의 선생님께서 컴포넌트와 관련된 클래스를 많이 생성했을 때 Update() 함수가 많이 호출되고 그 안에서 각각 Input.GetKey를 많이 호출하면 성능부하가 생길 것이라고 이해했습니다. KeyAction 에다가 OnUpdate 함수를 구독하면 각 함수들이 독립적, 순차적으로 실행될 것으로 이해됩니다. 위처럼 이해한다면 Update에서 각각 호출하는 것과 성능부하가 생긴다는 것이 잘 이해가 되지 않습니다. 선생님께서 말씀하신 인풋을 각각 관리하면 추후 유지보수에 어렵다는 내용에는 이해가 가지만 성능부하 관련해서는 아직 제 지식이 짧아서 이해가 잘 가지 않습니다.. Managers 내부 InputManager 변수 Managers 클래스를 싱글톤으로 생성한 이유는 Managers를 여러 오브젝트에 붙였을 때 따로 생성되고, 여러개가 생성될 필요가 없기 때문이라고 이해했습니다. 그렇다면 Mangers 내부 변수들도 저는 한번씩 생성되어야 된다고 생각이 됩니다. 하지만 InputManager _input = new inputManager(); 를 변수에서 생성한다면 Managers 클래스는 한번씩 생성되지만 InputManager 클래스는 여러 object에 Managers.cs를 어태치 한다면 계속 생성된다고 이해됩니다. 혹시 제가 이해한 내용이 맞을까요? 맞다면 static 변수로 선언해야 되나요?? 그리고 좋은 강의 제공해주셔서 정말 감사합니다!

  • C#
  • unity
HAHA 댓글 1 좋아요 0 조회수 498

인기 태그

인프런 TOP Writers

주간 인기글