inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

텍스트 드래그 앤 드롭

미해결

레트로의 유니티 C# 게임 프로그래밍 에센스

게임매니저 2/2 에 이제 텍스트가아닌 텍스트메쉬프로를 쓰게되었는데요 선생님강의처럼 드래그엔 드롭이안되네요 ㅠㅠ 아시는분계실까요 score text 랑 best score text가 드래그 드롭이안됩니다..

  • C#
  • unity
김우용(Noel) 댓글 2 좋아요 0 조회수 414

EventHandler<T> 를 사용하는 이유가 무엇인가요?

미해결

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

Listener 클래스에 args.Completed += new EventHandler<SocketAsyncEventArgs>(OnAcceptCompleted); 부분을 args.Completed += OnAcceptCompleted; 이렇게 바꾸어도 문제가 생기지 않는데 왜 EventHandler<T> 를 사용하는 것인가요?

  • C#
  • unity
  • 네트워크
이세진 댓글 1 좋아요 0 조회수 323

안녕하세요 랜덤오브젝트 생성기에서 질문있습니다.

미해결

레트로의 유니티 C# 게임 프로그래밍 에센스

16:04 에 prop prefabs에 저는 사이즈가 안나오는데 왜그럴까요..? using System.Collections; using System.Collections.Generic; using UnityEngine; public class SpawnGenerator : MonoBehaviour { public GameObject[] propPrefabs; private BoxCollider area; public int count = 100; private List<GameObject> props = new List<GameObject>(); void Start() { area = GetComponent<BoxCollider>(); for (int i = 0; i < count; i++) { Spawn(); } area.enabled = false; } private void Spawn() { int selection = Random.Range(0, propPrefabs.Length); GameObject selectedPrefab = propPrefabs[selection]; Vector3 spawnPos = GetRandomPosition(); GameObject instance = Instantiate(selectedPrefab, spawnPos, Quaternion.identity); props.Add(instance); } private Vector3 GetRandomPosition() { Vector3 basePosition = transform.position; Vector3 size = area.size; float posX = basePosition.x + Random.Range(-size.x/2f, size.x/2f); float posY = basePosition.y + Random.Range(-size.y/2f, size.y/2f); float posZ = basePosition.z + Random.Range(-size.z/2f, size.z/2f); Vector3 spawnPos = new Vector3(posX,posY,posZ); return spawnPos; } // Update is called once per frame void Update() { } }

  • C#
  • unity
김우용(Noel) 댓글 1 좋아요 0 조회수 266

RecvBuffer 질문

미해결

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

안녕하세요. Session에서 _recvArgs.SetBuffer() 하는 부분에서 궁금증이 생겼습니다. _recvBuffer.WriteSegment는 다음에 올 패킷 사이즈가 어느 정도인지 모르니 버퍼의 offset + writePos부터 여유공간 끝까지(FreeSize)를 뭉탱이로 가리켜서 주는걸로 이해했습니다. 그리고 _recvArgs는 WriteSegment가 가리키는 공간을 자신의 버퍼로 사용합니다. 만약, 실제로 보내고자 했던 패킷의 사이즈가 10인데, _recvArgs의 FreeSize가 5라면, 소켓은 일단 5만큼만 버퍼에 넣은 다음에 버리고, 나머지 5만큼의 재전송을 요청하는 건가요? 아니면 아예 버리고 재전송을 요청하는건가요? 그것도 아니라면 물밑(하위 레이어)에서 버퍼가 꽉 찼다는 신호를 서로 주고받아서 혼잡(?)이라 판단하고 애초에 보내지 않고 기다리는건가요? (버퍼가 비어지길 기다리다가 지치면 Disconnect 혹은 Loss?) 그리고 RecvBuffer의 Buffer가 TCP 이론을 배울 때 말하는 window size와 직접적으로 연관되는 건가요? 아니면 소켓 별도의 버퍼가 또 따로 있는건가요?

  • C#
  • unity
  • 네트워크
김병대 댓글 1 좋아요 0 조회수 191

Open File in Solution

미해결

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

강의 중간중간에 Open File in Solution 이라는 팝업 띄우셔서 바로 클래스로 찾아가시는데 어떤 단축키를 눌러야 되는건가요?

  • C#
  • unity
  • MMORPG
루테닛댄 댓글 1 좋아요 0 조회수 269

해상도

미해결

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

안녕하세요 강의 정말 잘 듣고 있습니다. 혹시 해상도는 계속 720 인 건가요? 강의 내용 모든 게 다 좋은데 해상도가 ㅠㅠ

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

Unity 연동 시 Disconnect 문제

미해결

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

안녕하세요 강사님 코드비교도 하고 소스코드를 다운 받아서 시도를 해도 해결이 되지 않아 문의 드립니다. 유니티 2022.3.15f 버전을 사용하고 net8.0을 이용하여 서버 및 클라이언트 빌드를 했습니다. 유니티 연동까지 했고, 버퍼크기는 65535로 설정해두었습니다. 유니티 connector.cs에서 클라이언트를 1로 설정했을 때에는 문제가 없으나 2 이상 올릴 경우 1번이 무조건 disconnect 처리가 됩니다. 100이상 올릴 경우 중간에 패킷조립에 실패하여 서버가 종료됩니다. 며칠을 고민하고 코드를 비교하고 강사님의 코드로만 진행을 해도 똑같아 문의남깁니다.

  • C#
  • unity
  • 네트워크
siasky21 댓글 1 좋아요 0 조회수 241

Initialize와 Render에 관한 오류로 테두리 빨간으로 노출되지 않고 모두 녹색으로 출력됩니다.

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘

지금 실행시 다음과 같이 Initialize와 Render에 관한 오류로 테두리 빨간으로 노출되지 않고 모두 녹색으로 출력됩니다. 확인부탁드립니다. 1>D:\projact\ConsoleApp1\ConsoleApp1\Program.cs(19,19,19,29): error CS1501: 인수 1개를 사용하는 'Initialize' 메서드에 대한 오버로드가 없습니다. 1>D:\projact\ConsoleApp1\ConsoleApp1\Program.cs(51,23,51,29): error CS1061: 'Board'에는 'Render'에 대한 정의가 포함되어 있지 않고, 'Board' 형식의 첫 번째 인수를 허용하는 액세스 가능한 확장 메서드 'Render'이(가) 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요. 1>"ConsoleApp1.csproj" 프로젝트를 빌드했습니다. - 실패 ========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========

  • C#
  • initialize
  • render
tlsgmlwo1 댓글 1 좋아요 0 조회수 260

Connector 강의에서 에러가 뜹니다..

해결됨

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

모듈이나 라이브러리를 빌드하고 있으면 /main을 지정할 수 없습니다. 라고 에러가 뜨고 있습니다. vs2022 버전으로 사용하고 있구요. DummyClient랑 Server 모두 참조 프로젝트로 ServerCore를 걸어주었습니다. 위가 ServerCore의 속성이구요. 이게 Server의 속성입니다. DummyClient도 똑같아요. 어디가 문제인걸까요 ?

  • C#
  • unity
  • 네트워크
boneoflily 댓글 1 좋아요 0 조회수 411

이미지가 없는거같습니다

미해결

유니티 AR로 만드는 FPS 게임

영상 처음부분에 이미지 가없는거 같습니다 경로를알려주실수 있나요 ?

  • C#
  • unity
  • VR/AR
볼트액션1891 댓글 2 좋아요 0 조회수 418

Console.Writeline 메모리누수

미해결

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

JobTimer 까지 모두 수강하고 Session쪽 코드에서 RecvBuffer _recvBuffer = new RecvBuffer(1024); 이것만 이렇게 다시 수정했습니다. 그리고 실행시켰는데 메모리가 늘어나더니 저런 오류가 떠서 Console.Writeline 쪽 코드를 지우고 실행시키니까 이렇게 메모리가 계속 늘어나지 않고 일정하게 유지 되는데 단순히 Console.Writeline이 많이 실행돼서 그런건가요?

  • C#
  • unity
  • 네트워크
이 동호 댓글 1 좋아요 0 조회수 281

AcceptAsync() 와 BeginAccept() 의 차이가 궁금합니다.

미해결

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

이 강의를 구매하기 전 이런저런 자료를 찾아보며 혼자 TCP 통신을 공부하고 있었습니다. 그런데 제가 공부할 때는 Begin~() 를 사용했었습니다. 그런데 이 강의 에서는 ~Async() 를 사용하더라고요 사용하기는 Begin~() 이 더 간단하던데 이 강의에서 ~Async() 를 사용하는 다른 이유가 있을까요? 궁금합니다.

  • unity
  • 네트워크
  • C#
이세진 댓글 1 좋아요 0 조회수 433

ServerCore 일부 복붙하는걸 심볼릭링크로 해도 괜찮을까요?

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

유니티 측에서 사용자정의 심볼을 넣어서 위 사진과 같이 전처리기를 사용해 Server측에서는 Console.WriteLine Client측에서는 Debug.Log 이 호출되도록 구성하였습니다. 에디터상에서 실행하는것까지는 크게 문제없이 잘 되는 것 같습니다! 이러면 어느쪽에서든 로직 사소하게 변경해도 복붙 까먹는 일이 없어 좋아보이는데 혹시 퍼블리싱단계나 추후에 크게 문제될 부분이 있을까요?

  • C#
  • unity
김병대 댓글 2 좋아요 0 조회수 332

Poolable 컴포넌트를 코드를 통해 넣어주려면

해결됨

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

강의에선 Poolable 컴포넌트를 유니티 실행 전에 유니티에서 드래그앤드롭으로 미리 넣어줍니다. 제 질문은 강의처럼 미리 넣어주는게 아닌 실행된 뒤에 코드에서 GetOrAddComponent함수를 통해 넣어주려고 합니다. 그런데 코드에서 GetOrAddComponent함수를 통해 넣어주면 복제가 된 뒤에 넣어져 풀링이 되지 않습니다. ResourceManager의 Instantiate 함수를 보면 Object.Instantiate를 실행하기 전에 풀링된 오브젝트가 있는지 확인을 해서 그런거 같습니다. Pop()함수가 호출이 안되니 _pool Dictionary에 새로 생성되지 않습니다. 제 생각에는 Push 함수에서도 CreatePool을 해주는 방식이나 ResourceManager의 Instantiate 함수 안에서 Object.Instantiate를 실행하기 전에 오브젝트의 이름이나 태그를 통해 미리 넣어주고 복사하는 방식이 생각이 나는데 전자는 강의에서 말씀하신 예외사항에 대처할 수 없고 후자는 그리 효율적이라고 생각되지 않습니다. 혹시 다른 좋은 방법이 있을까요? 강의에서 말씀한 내용이라면 죄송합니다.

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

어드레서블 관련 궁금한 점이 있습니다

해결됨

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

안녕하세요 좋은 강의 감사합니다. 어드레서블 관련해서 궁금한 점이 있어서요. 앱을 출시하고 업데이트 할 때, 검토 기간이 어느 정도 소요되는 것으로 알고 있습니다. (UI_LobbyScene.prefab 을 예시로 가져왔습니다) 현재 버전인 A 를 (화살표 기준으로) 위의 이미지, 업데이트 될 버전 B 를 아래의 이미지로 가정 했을 때, 어드레서블 파일들을 업데이트 하고, 검토를 보낸다면, 검토가 완료되기 전 까지 어드레서블 만 업데이트 된 A 버전의 사람들은 작동하지 않는 [이벤트] 버튼을 사용하게 될 것 같은데요. 아직 이벤트 기능을 포함한 스크립트가 생성된 B 버전의 앱은 출시가 되지 않은 상황 이기 때문입니다. 혹시 이 부분을 어떻게 해결 하면 좋을까요?

  • C#
  • unity
  • object-pooling
이성찬 댓글 1 좋아요 0 조회수 411

Get Instance () 궁금합니다

미해결

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

Get Instance () 이거는 기본 내장 함수 인가요 ? 이해가 잘안됩니다.. {} 안에 있는 리턴 은 어디로 리턴 받나요 기초 강의인데 설명이 없어서요 ㅠㅠ 혹시 설명 부탁드려도 되나요 get 하고 중괄호 사용하시던데.. 헷갈려서요 설명부탁드립니다

  • C#
  • unity
화사한 북극곰 댓글 1 좋아요 0 조회수 258

zenject를 현업에서도 많이 사용하나요?

미해결

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

zenject를 배우고 이를 프로젝트에 활용해서 개발하고 있었는데 이번에 이 강의를 보고 배우면서 이전에 구현하던 방식에 좀 회의가 들어서요. 제가 zenject에 대해 완벽히 알고 있는게 아니라 개발 속도가 많이 느리기도 하고 진행 중이신 프로젝트를 zenject로 바꿔서 개발할 수 있을지 확신이 없기도 하네요.. 혹시나 다른 개발자 분들이 투입된다면 협업하는데 장애가 될까 걱정도 되서 질문 남깁니다. 그리고 좋은 강의 감사합니다.

  • C#
  • unity
  • MMORPG
김영민 댓글 1 좋아요 0 조회수 340

에러에 관한 질문입니다.

미해결

C# TCP/IP 소켓 프로그래밍

************** 예외 텍스트 ************** System.Net.Sockets.SocketException (10061): 대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다. at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken) at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) at System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c.<.cctor>b__4_0(Object state) --- End of stack trace from previous location --- at Client.Singleton.ConnectAsync() in P:\Chat\Client\Singleton.cs:line 36 at Client.LoginForm.btn_login_Click(Object sender, EventArgs e) in P:\Chat\Client\LoginForm.cs:line 20 at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state) 16:45초 로그인 할 때 이렇게 뜨네요 ㅠㅠ 해당 라인 가보면 LoginForm.cs await Singleton.Instance.ConnectAsync(); Singleton.cs await Socket.ConnectAsync(endPoint); 입니다. 아이피와 포트도 제대로 입력해주었습니다. 강사님이 올려주신 파일 통째로 받아서 해봤는데도 동일한 오류가 발생합니다. 어떻게 해결해야하나요? 코드 첨부합니다. LoginForm.cs using Core; namespace Client; public partial class LoginForm : Form { public LoginForm() { InitializeComponent(); } private async Task btn_login_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(tbx_id.Text) || string.IsNullOrEmpty(tbx_nickname.Text)) { MessageBox.Show("입력하세요"); return; } await Singleton.Instance.ConnectAsync(); LoginRequestPacket packet = new LoginRequestPacket(tbx_id.Text, tbx_nickname.Text); await Singleton.Instance.Socket.SendAsync(packet.Serialize(), System.Net.Sockets.SocketFlags.None); Singleton.Instance.Id = tbx_id.Text; Singleton.Instance.Nickname = tbx_nickname.Text; RoomList roomList = new RoomList(); roomList.ShowDialog(); } } Singleton.cs using System.Net; using System.Net.Sockets; namespace Client; /// <summary> /// 언제 어디서나 접근할 수 있는 객체. /// 이 객체는 반드시 1개만 존재해야 한다. /// </summary> internal class Singleton { public string Id { get; set; } = null!; public string Nickname { get; set; } = null!; public Socket Socket { get; } = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); private static Singleton? instance; public static Singleton Instance { get { if (instance == null) instance = new Singleton(); return instance; } } private Singleton() { } public async Task ConnectAsync() { IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("192.168.219.106"), 20001); await Socket.ConnectAsync(endPoint); ThreadPool.QueueUserWorkItem(ReceiveAsync, Socket); } private async void ReceiveAsync(object? sender) { Socket socket = (Socket)sender!; byte[] headerBuffer = new byte[2]; while (true) { #region 헤더버퍼 가져옮 int n1 = await socket.ReceiveAsync(headerBuffer, SocketFlags.None); if (n1 < 1) { Console.WriteLine("client disconnect"); socket.Dispose(); return; } else if (n1 == 1) { await socket.ReceiveAsync(new ArraySegment<byte>(headerBuffer, 1, 1), SocketFlags.None); } #endregion #region 데이터버퍼 가져옮 short dataSize = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(headerBuffer)); byte[] dataBuffer = new byte[dataSize]; int totalRecv = 0; while (totalRecv < dataSize) { int n2 = await socket.ReceiveAsync(new ArraySegment<byte>(dataBuffer, totalRecv, dataSize - totalRecv), SocketFlags.None); totalRecv += n2; } #endregion } } }

  • C#
  • tcpsocket
  • tcpip
딱딱한바게트 댓글 1 좋아요 0 조회수 1205

안녕하세요 오늘 첫 수업들었는데 질문 있습니다

미해결

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

1달차 처음 강의 영상봤는데 Managers 질문 1 : 영상에서 나중에 보충수업에서 설명해주신다고 했는데 어디서 볼수있나요 ?? 질문 2: 혹시 공부중에 못따라가면 어떤 강의 보충 하면 좋나요 ? 질문 3 : 디스코드 초대 어떻게 받을 수 있나요

  • C#
  • unity
  • MMORPG
흠흠이 댓글 1 좋아요 0 조회수 315

15:09 GenPackets.bat

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

15:09초까지 똑같이 따라하고 그래서 최신 버전도 protobuf를 받아서 해봤지만 아무리 다시 해보고 찾아 보려해도 아무것도 뜨지 않는데 이유를 알 수가 없습니다 ㅠㅠㅠㅠ

  • C#
  • unity
요가인 댓글 3 좋아요 1 조회수 561

인기 태그

인프런 TOP Writers

주간 인기글