묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
Utils에 있는 GetOrAddComponent 질문이 있습니다.
강의 34분 10초에서 PlayerController를 가져올 때GameObject go = Managers.Resource.Instantiate("Slime_01.prefab"); go.name = "Player"; PlayerController controller = go.GetOrAddComponent<PlayerController>();그냥 자연스럽게 go 뒤에 GetOrAddComponent 함수를 사용하시던데 이렇게 되는 이유가 뭔가요...?PlayerController controller = Utils.GetOrAddComponent<PlayerController>(go);저는 위에 코드처럼 호출해서 사용해야 한다고 생각했습니다.
-
미해결레트로의 유니티 C# 게임 프로그래밍 에센스
text가 아닌 TextMeshPro를 사용해도 괜찮나요?
2021.3.20f1 버전 사용중입니다.기존 Text가 UI의 Legacy 폴더 안에 있고 원래 Text가 있던 자리에 TextMeshPro가 있네요.인터넷을 좀 찾아봐도 TextMeshPro를 권장하는 사람들이 많더라구요시간이 지나면서 새로운 버전이 나온것 같던데 사용법이 비슷하면 TextMeshPro를 사용하는게 더 좋겠죠?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
센드 리시브 버퍼를 살리고 싶어서 몇가지 물어봅니다.
강사님 께서는:SendBufferHelper(버퍼)가 세션 외부에 있는 상황은 바람직 하지만플레이어 세션중(PacketSession)하나가 send() 처리를 못하고 이런 일회용 버퍼를 계속 물고 있을 수 있다.(ex 사용자가 엘리베이터를 타서 통신이 안되는 경우)그럼 참조정리를 못하니 GC가 수거를 안해간다. 이 버퍼 릭킹 문제를 처리하기 위해 레퍼런스 카운트를 적용할수도 있다 라고 말씀하셨는데. C#에서 이를 구현하는데 난관이 있어서요(그점도 이미 말씀하셨었죠), 아래와 같습니다. 레퍼런스 카운트 사용 방식 (예상)만약 100명의 사용자에게 브로드 캐스팅 할경우 이 버퍼에 대한 레퍼런스 카운트를 100으로 세팅한다.각 세션에서(100개) 각각 send에 성공해서 버퍼에 대한 참조가 끝날 때마다 1씩 감소시킨다.이 카운트 감소 처리를 할때 쓰레드 동기화에 신경써야 한다.문제 1 ) 이런 동기화 처리도 성능에 영향을 준다. 레퍼런스 카운트 처리 때문에 샌드함수는 결국 지연되는 것.문제 2) 매번 다 쓰인 버퍼의 레퍼런스 카운트가 0이 되었다 한들, 그것을 GC가 "항상" "확실히" 수거해가는지 테스트할 방법을 모른다.문제 3) 레퍼런스 카운트가 0이 안되고 1이 유지되어서 어딘가에서 send가 막혀있는걸 확인 했을때 그 세션을 Disconnect()한다고 해도 GC가 이 버퍼를 "항상", "확실히"수거해 갈지 알 수 없다 (테스트 방법의 부재) 그래서 아래와 같은 질문을 드립니다.!! 질문 0 !!) 강사님께서 메모리 릭에 대한 우려가 있다고 말씀하셨는데, 그게 순전히 우려인지, 혹시 테스트를 해보신건지 궁금합니다.다시 말해서 C#에서 샌드 리시브 버퍼를 그냥 쓰기로 강행하면 나중에 낭패 볼까요? 질문 1 ) 위의 2,3번 문제를 체크할 수 있는 방법이 있을까요? 질문 2 ) 요즘 C#서버가 많이 보입니다. 모두 이런 문제를 고려했을텐데요, 그냥 매 순간 지금처럼 조각조각 패킷을 만들어 보내는게 대세인가요? 아니면 다른 방법이 있나요? 질문 3) 위의 1번 문제의 성능 감소가 클까요? 질문 4) 혹시 버퍼 크기를 4096 * 100 이 아니라 250, 300 등 작게 잡으면 이문제를 무시해도 될까요? P.S 이 강의 시리즈가 매우 큰 도움이 되고 있습니다. 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
배열의 저장 장소
안녕하세요배열 초기화 방법 중int[] scores = new int[]{ 1, 2, 3, 4, 5}이런 방법이 있고 점점 생략을 해서int[] scores = {1, 2, 3, 4, 5}이런 방법이 있다고 하셨는데밑에 방법은 일반적으론 stack에 저장되는것처럼 보이는데 new int[]를 생략을 한거니 heap에 저장되는게 맞을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
경합조건과 임계영역의 차이
안녕하세요. Interlocked 과목 중 경합 조건Race Condition에 대한 수업 잘 들었습니다.과거 네트워크와 운영체제 시간에 배웠던 임계 영역과 경합 조건에 대한 개념이 헷갈려서 질문 드리고 싶습니다.말씀해주셨던 다수의 쓰레드들이 하나의 데이터 혹은 그러한 영역에 접근하고자 할 때 생기는 문제를 저는 경합 조건이라고 이해했는데요.이 개념이 혹시 임계 영역을 제가 잘 못 이해하고 있는지, 혹은 경합 조건에 대해 제대로 이해하고 있는지 궁금합니다.또 선생님께서 생각하시는 임계영역과 경합조건의 차이는 어떠한 것인지도 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
펙토리 함수가 꼭 필요한건가요? 그냥 세션으로 받으면 안되요?
public void Connect(IPEndPoint endPoint, Session session) // 사용하는 부분//connector.Connect(serverEndPoint, () => { return new GameSession(); }); GameSession gameSession = new GameSession(); connector.Connect(serverEndPoint, gameSession);Func 형 말고 그냥 Session을 참조로 받아서 하면 안되나요? 코드가 돌긴 하던데..
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
원모양 크기가 너무 작은 것 같습니다
어떤 설정을 해야 될까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
인벤토리 실습 #2 질문 AddUIEvent활용
인벤토리 실습을 보다 가 이해가 안가는 부분이 생겨서 질문을 남깁니다.보시면(안보일 수도 있겠지만), Get<GameObject>((int)GameObjects.ItemIcon).AddUIEvent((PonterEventData) => {Debug.Log)})를 했는데.. 여기서 Action 대리자로 람다식이 들어 가서 실행 이 되는건 알겠는데, ㅇ파라미터에 게임오브젝트는 안들어갔는데 이게 왜 바인드가 되는거죠?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
위치 동기화 기능구현 질문이 있습니다
선생님 안녕하세요 서버강의를 듣고 이를 응용하여 3축 좌표계에서 플레이어가 접속하면 프리팹을 생성하고, 트랜스폼 정보와 애니메이션 정보를 동기화하는 서버를 구현하였습니다.플레이어가 접속하면 생성되는 프리팹은 언리얼의 HasAuthority와 같이 로컬 클라이언트의 소유가 되어 클라이언트만 자신의 위치를 브로드캐스트하면 다른 플레어들은 위치를 수신하여 손쉽게 구현이 가능했습니다!하지만 월드에 미리 배치되어있는 무버블 오브젝트들은 어떻게 동기화를 해야하는지 궁금합니다. 누구의 소유도 아닌 공공(?)의 오브젝트들은 누가 동기화 패킷을 보내줘야하는지 어렵습니다 ㅜㅜ조금 더 설명을 하면, 특정 조건에 함수가 호출되어 움직이는 기능을 수행하는경우는 RPC로 원격지 클라이언트에서 함수를 호출할 수 있게 구현하였습니다.하지만 미리 씬에 배치되어있는 Sphere 오브젝트를 플레이어가 움직이면서 밀어RigidBody 연산으로 자연스러운 움직임을 어떻게 동기화해야하는지 잘 모르겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Disconnect 순서 문제질문드리고싶습니다!
가끔 결과가 위처럼 나오는데 이 문제는 서버단에서 RegisterRecv를 해주는 도중에 클라에서 send를 다해주고 Disconnect 해버려서 발생하는 문제인가요??위에 Seesion.cs : lin116은 OnRecvCompleted함수에서 OnRecv를 해주고 다시 RegisterRecv()<< 이 함수를 호출하는 줄입니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
자동 프로퍼티 안에 함수 사용 질문입니다
예를 들어 무적일때 피해를 입지 않게 한다면,static public bool isInvincibility; // 무적상태public int hp =100 ; public int Hp { get { return hp1; } set {if(!isInvincibility) hp1 = value; } }이렇게 설정할때, 자동 프로퍼티도 위와 같이 설정 할수 있을까요?public int hp { get; set; } = 100;위 문장에서 set 부분 안에 저 무적 부분을 넣어보고 싶습니다.
-
미해결C# 프로그래밍 기초
기본타입 강의 중 질문입니다.
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 예제_3{ class Program { int a = 3; static void Main(string[] args) { int a; a = 1; //a=3.14F; char c = 'A'; string str = "abcd"; bool con = true; Console.WriteLine("a =" + a); Console.WriteLine("c =" + c); Console.WriteLine("str =" + str); Console.WriteLine("con =" + con); Func1(); } // 같은 이름이 있으면 내가 속한 블럭의 것이 우선! static private void Func1() { Console.WriteLine("a =" + a); } }} 이걸 똑같이 하는데빌드 시작...1>------ 빌드 시작: 프로젝트: 예제_3, 구성: Debug Any CPU ------1>D:\임상훈\C# 프로그래밍 기초\실습\예제_3\예제_3\Program.cs(29,39,29,40): error CS0120: static이 아닌 필드, 메서드 또는 속성 'Program.a'에 개체 참조가 필요합니다.========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========빌드 실패가 뜨는 이유를 모르겠습니다.
-
미해결[실전 게임 코드 리뷰] 유니티 캐주얼 게임 (엘리스팡)
멘토링 관련 질문이 있어요!
7월 멘토링 일정중에 웹서버는 어떤 것을 사용하는지 궁금합니다.
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
[Adaptive Performance] Adaptive Performance is disabled via Settings.
[Adaptive Performance] Adaptive Performance is disabled via Settings. 테스트 플레이중에 자꾸 이 메세지가 나와서 거슬리는데요 에디트 - adaptive Performance에 들어가서 해결하려고했느데 Android Provider 체크박스는 체크가 되지않고 Adaptive Performance Provider Management error. Failure reason: Error Message: Unable to add package [com.unity.adaptiveperformance.google.android]: Cannot find a version of package [com.unity.adaptiveperformance.google.android] compatible with this Unity version (2021.3.16f1)..Error installing package 이런 오류만 발생합니다 삼성 안드로이드 프로바이더는 체크가 되서 체크를 하는데 그래도 같은 메세지가 출력됩니다. 이유가 무엇인가요??
-
미해결C# 프로그래밍 기초
19:14 실행이 안되고 꺼집니다.
'ConsoleApp1.exe'(CLR v4.0.30319: DefaultDomain): 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'을(를) 로드했습니다. 기호를 로드하지 않고 건너뛰었습니다. 모듈이 최적화되어 있고 '내 코드만' 디버거 옵션을 사용하도록 설정되어 있습니다.'ConsoleApp1.exe'(CLR v4.0.30319: DefaultDomain): 'D:\임상훈\C# 프로그래밍 기초\실습\ConsoleApp1\ConsoleApp1\bin\Debug\ConsoleApp1.exe'을(를) 로드했습니다. 기호가 로드되었습니다.'[13256] ConsoleApp1.exe' 프로그램이 종료되었습니다(코드: 0 (0x0)).이게 아래 뜨는 거고요. using System;class Hello_World{ static void Main() { Console.WriteLine("Hello World"); }}쳤는데, 뜨다가 꺼지네요.F5로 눌렀고요.도와주세요.
-
미해결C# 프로그래밍 기초
프레임워크 4.6.1이 없습니다.
4.6이랑 4.7.1이 있습니다.버전은 2019버전이고요.(유니티 강의 하면서 깔았습니다.) 상관 없나요?
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
스프라이트 강의 자료는 어디있나요
강의 목록 최하단부에 있는 소스코드 자료는 너무 양이 방대해서 거기서 스프라이트만 임포트하기가 좀 부담스럽더군요. 분명히 스프라이트만 따로있는 강의 자료 다운로드가 있을것같은데 찾기 어렵습니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
동영상 준비중입니다!
오늘 결제해서 듣고 있는데요! 정수 범위의 비밀은 동영상 준비중이라 뜨는데 언제 올라오는건가요??
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
sbyte? 답변해주세요
4:29 쯤에서요sbyte를 설명해주셨나요? 강의 보다가 sbyte는 언급안해주신것같던데 잘모르겠습니다
-
미해결따라하면서 배우는 고박사의 유니티 하이퍼캐주얼게임 시리즈 02
1010 프리팹 생성 질문
BackgroundBlockSpawner 스크립트에서프리팹을 생성하는 // 블록 생성 (원본 프리팹, 위치, 회전, 부모 Transform)GameObject clone = Instantiate(blockPrefab, position, Quaternion.identity, transform);부분에서 마지막 부모 Transform 위치에 적은 transform 작성 이유를 모르겠습니다... 뭔가 프리팹이 생성 될 때, 어떤 부모 오브젝트의 자식으로 프리팹이 생성되는 것 같은데.. 정확한 설명 부탁드립니다.