묻고 답해요
137만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결레트로의 유니티 C# 게임 프로그래밍 에센스
레이케스트 에셋을 다운받았는데 임포트 방법을 모르겠습니다.
위와 같은 폴더가 잔뜩있는데, 어떻게 임포트를 해야하는지 모르겠네요..
-
미해결[Rookiss 켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
멀티 스레드 관련 의문점
안녕하세요 강의 잘 보고 있습니다.코드를 보면서 멀티 스레드 관련해서 궁금한게 있어 질문 남깁니다.1.ClientSession에서 Lock을 잡지 않는 이유는 Receive쪽에서 하나의 스레드만 들어오기(낚시대 비유) 때문에 안걸어도 되는건가요? 즉 하나의 스레드가 메서드 안의 메서드를 타고 타고 들어와서 안전한건가요?2. 1번이 맞다면 ClientSession 에서 GameLogic Push 하는 이유는 스레드 안전성 때문이라기보단 멀티 스레드를 활용하기 위함이라 보면 될까요?
-
미해결따라하면서 배우는 고박사의 유니티 하이퍼캐주얼게임 시리즈 02
코드 자료를 받을 수 있을까요?
코드 자료를 받을 수 있을까요?
-
미해결[Rookiss 켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
포폴용으로 AWS 인스턴스 1개와 탄력적 IP 1개를 항시 켜놔도 비용이 부과될까요?
루키스님 안녕하세요? C# AWS 답변 보고 여기로 와서 클라 입장 공인 IP를 가지고 사설 IP에 접근하는 것 성공했습니다. 아침 답변 감사합니다. 제가 포트폴리오 작성 간에 데모 프로그램을 준비해보려고 하는데 (기준은 C# 파트7 수강 이후입니다) 첫 번째 방법은 클라, 서버 exe 한폴더에 넣고 .bat 파일 만들고 이거 하나만 실행시키서 서버 실행 -> 클라 실행 순으로 입장시키기 입니다. 그런데 이 방법은 .net이 안깔려 있으면 서버부터 크래시가 나길래 인사담당자나 면접관이 못볼 수도 있겠어서 찜찜해서 두 번째 방법으로 생각한건 AWS입니다. 윈도우 프리티어와 인스턴스 프리사양, 그리고 고정용 IP용 탄력적 IP를 만들어서 항시 켜놓으려고 합니다(보안 정책은 여기 강의처럼다 뚫어놓긴 합니다). 그리고 데모 프로그램은 클라이언트만 제시하는 방법을 생각 중입니다. 이 경우 AWS 서비스가 무료거나 소액이면 해볼만한 방법이라고 생각되는데 둘 중에 어느 방법이 괜찮을지 의견 여쭈고 싶어서 질문 드립니다.
-
미해결레트로의 유니티 C# 게임 프로그래밍 에센스
혹시 어드레서블 강좌 추가계획이 있으실까요?
에센스 도서에 보니까 어드레서블 관련 개정판 내용이 있던데요.혹시 강좌에도 추가해주실 계획이 있으신가 궁금해서 문의드립니다.
-
해결됨[Rookiss 켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
JobTimer 클래스의 우선순위 큐 질문
안녕하세요. JobTimer 클래스에서 사용된 우선순위 큐 관련해서 2가지 궁금한 점이 있습니다.1. 여기서 사용된 우선순위 큐는 최소힙으로 구현된게 맞나요?PriorityQueue.cs 에 작성된 우선순위 큐는 최대힙 이지만, JobTimerElem 구조체를 정의할 때 CompareTo 메서드를 오버라이딩 해서 최소힙을 사용하게끔 수정한 것으로 이해했는데 제대로 이해한게 맞을까요?2. Pop 메서드에서 힙 정렬 과정 질문 PriorityQueue.cs에 작성된 Pop 메서드의 While 문이 힙 정렬을 담당하는 부분으로 이해했습니다.만약 While 문 한 번으로 정렬이 끝나지 않는 경우는 어떡하나요?예를 들어 다음과 같이 저장된 최소 힙의 경우이렇게 While문이 한 번 끝났는데 최솟값인 2가 루트 위치에 있지 않은 경우가 있어서 질문 드립니다.
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
스텟 연동 관련해서 질문이 있습니다.
제가 기존에 개발해둔 아이템 시스템을 연동시키면서 아이템의 스텟을 정할때 Resources/Stat폴더를 참조하고 그걸 기반으로 Enum으로 해당 스텟들이 있는 스크립트 파일을 만든 다음에 아래에 있는 버튼을 눌러서 일일히 Enum 파일을 동기화시켰는데 너무 번거로운것 같습니다. 생성, 삭제, 수정할때마다 동기화시키면 작업할때마다 딜레이가 너무 커지는데 다른 방법이 있을까요if (dataType == typeof(Stat)){GUI.color = Color.yellow;// Data를 이름 순으로 정렬하는 Button을 그림if (GUILayout.Button($"Press it after you finish editing")){StatEnumSynchronizer.SyncStatEnum();EditorUtility.SetDirty(database);AssetDatabase.SaveAssets();}}아래는 해당 enum파일을 만드는 스크립트입니다.using System;using System.IO;using System.Linq;using UnityEditor;using UnityEngine;public static class StatEnumSynchronizer{private const string StatFolderPath = "Assets/Resources/Stat";[MenuItem("Tools/Sync Stat Enum")]public static void SyncStatEnum(){if (!Directory.Exists(StatFolderPath)){Debug.LogError($"Directory does not exist: {StatFolderPath}");return;}var statFiles = Directory.GetFiles(StatFolderPath, "*.asset", SearchOption.TopDirectoryOnly);var statCodeNames = statFiles.Select(file => AssetDatabase.LoadAssetAtPath<Stat>(file)).Where(stat => stat != null).Select(stat => stat.CodeName).Distinct().OrderBy(name => name).ToList();string enumPath = "Assets/Scripts/Enum/ItemStatusAttribute.cs";using (var writer = new StreamWriter(enumPath, false)){writer.WriteLine("public enum ItemStatusAttribute");writer.WriteLine("{");writer.WriteLine(" Default,");foreach (var codeName in statCodeNames){string enumName = SanitizeEnumName(codeName);writer.WriteLine($" {enumName},");}writer.WriteLine("}");}AssetDatabase.Refresh();Debug.Log("Stat Enum synchronized.");}private static string SanitizeEnumName(string name){return new string(name.Where(c => !char.IsWhiteSpace(c) && (char.IsLetterOrDigit(c) || c == '_')).ToArray()).Replace(" ", "_").Replace("-", "_").ToUpper();}}
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발!
오브젝트 폴링 문의 합니다.
Add_Queue 함수에서 go.transform.parent = m_pool_Dictionary[path].parentTransform;부모 설정을 하고 다시 Return 함수로 가서 obj.transform.parent = parentTransform; 다시 부모 설정 하는 이유가 궁금 합니다. 아 그리고 스킬 구현 아이디어는 끝났나요 ?
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
포트폴리오 문서작성에 있어서 질문드립니다.
안녕하세요 신입 클라이언트 프로그래머 취업을 준비하고 있습니다.다름이아니라.. 제가 강사님의 강의를 열심히 듣고 3D로 포트폴리오를 프로토타입 수준으로 제작을 완료했습니다.플레이어가 메인씬으로 이동해 상점에서 물품을 구매하고 인벤토리를 통해 장비를 장착하고 NPC를 통해서 스테이지로 들어가서 잡몹을 처리후 보스를 처치하고 스테이지를 클리어 하는 부분까지 구현을 했는데요...이번에 포트폴리오를 제출하려고 하는데 포트폴리오에 얼마나 디테일한 부분까지 작성을 해야할까요?? 그리고 영상을 꼭 필요할까요??? 커뮤니티를 찾아봤는데 말이 다 달라서 질문드립니다...
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
텍스트 변환 Mark에 대하여 질문이 있습니다.
EffectAction에서public string BuildDescription(Effect effect, string description, int stackActionIndex, int stack, int effectIndex){ var stringsByKeyword = GetStringsByKeyword(effect); if (stringsByKeyword == null) return description; if (stack == 0) // ex. description = "적에게 $[EffectAction.defaultDamage.0] 피해를 줍니다." // defaultDamage = 300, effectIndex = 0, stringsByKeyword = new() { { "defaultDamage", defaultDamage.ToString() } }; // description.Replace("$[EffectAction.defaultDamage.0]", "300") => "적에게 300 피해를 줍니다." description = TextReplacer.Replace(description, "effectAction", stringsByKeyword, effectIndex.ToString()); else // Mark = $[EffectAction.Keyword.StackActionIndex.Stack.EffectIndex] description = TextReplacer.Replace(description, "effectAction", stringsByKeyword, $"{stackActionIndex}.{stack}.{effectIndex}"); return description;}여기 부분에서 왜 굳이 스택 0번째 인걸 구분하고 Effect에서 여기에서public string BuildDescription(string description, int effectIndex){ Dictionary<string, string> stringsByKeyword = new Dictionary<string, string>() { { "duration", Duration.ToString("0.##") }, { "applyCount", ApplyCount.ToString() }, { "applyCycle", ApplyCycle.ToString("0.##") } }; description = TextReplacer.Replace(description, stringsByKeyword, effectIndex.ToString()); description = Action.BuildDescription(this, description, 0, 0, effectIndex); // 여기부분에 질문이 있습니다 여기에서 0번째 것을 구분하고 var stackGroups = StackActions.GroupBy(x => x.Stack); foreach (var stackGroup in stackGroups) { int i = 0; foreach (var stackAction in stackGroup) description = stackAction.BuildDescription(this, description, i++, effectIndex); }// 여기에서 1스택이상 스킬의 텍스트를 전부 변환해주는데 return description;} EffectStackAction에서public string BuildDescription(Effect effect, string baseDescription, int stackActionIndex, int effectIndex) => action.BuildDescription(effect, baseDescription, stackActionIndex, stack, effectIndex);이렇게 까지 분리해서 텍스트로 변환하는지 여쭤보고 싶습니다.그냥 0번째부터 텍스트를 변환하면 안되는건지 질문이 있습니다.
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
SingletonBehaviour 클래스의 where 제약 관련해서 질문 드립니다.
안녕하세요. 섹션 2의 SingletonBehaviour 강의 수강 중 궁금한 점이 생겨 질문 남깁니다.해당 클래스가 MonoBehaviour의 성격을 띄게 하기 위해서 클래스에 MonoBehaviour를 상속시키는 것 까지는 이해가 되었습니다.그러나 뒤에 다시 SingletonBehaviour<T>에 대한 제약의 필요성이 충분히 이해되지 않아 모호하게 느껴졌습니다. 앞으로 SingletonBehaviour를 상속 받을 클래스에 구현을 강제하는 것인지, 아니면 성능 상의 제가 알지 못하는 이점이 있는 것인지 궁금합니다.해당 SingletonBehaviour 클래스가 아니더라도, 클래스 설계에 있어 이와 같은 재귀적인 형태의 where 제약이 어떤 의미 또는 의도가 있는 것인지 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
DeadLock 테스트를 해봤지만, 정상작동?
visual studio 2022로 작업하고 있습니다.Interlocked(9강), Lock(10강), DeadLock(11강)에서 디버깅을 하면서 무한루프 또는 DeadLock(11강)에 디버깅이 안되는 것을 따라해보고 있었습니다.이전 컴파일러 최적화 강의(6강)를 따라하면서 Debug모드를 relase로 할 때 visual studio에서 3가지의 선택사항이 나왔었습니다. 취소해도 다시떠서 디버깅을위해 내꺼를 제외하고? 를 선택했었습니다.(항목이 기억이 나지 않네요.. 뭐라고 검색해야할지도 모르겠고 프로젝트를 새롭게 만들어도 해당사항은 나오지 않았습니다..) 그러고 나서 영상처럼 이부분이 문제입니다 하는 부분들이 저는 이상이 없더라고요여기서 중단점 잡아도 안잡히는 문제가 있다고 합니다. 그래서 WaitAll에서 스레드를 찾고 문제점을 찾으셨지만 제가 따라할 때는 중단점으로 넘어왔습니다. 제 생각에는 시간이 지나면서 C#이 업데이트 됐거나, 2019가 아닌 2022로 해서 해당 문제가 안생기는 걸까요? 이것 뿐만 아니라 이전꺼에서도 나왔는데 크게 문제될건 없지만 답답함에 질문드려봅니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
11분 6초 Array.Copy 질문
Array.Copy(Encoding.Unicode.GetBytes(this.name), 0 , segment.Array, count, nameLen);여기서 count가 아니라 segment.Offset + count가 되야 하는거 아닌가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
new Span<byte>에서 3번째 인자(length) 질문
success &= BitConverter.TryWriteBytes(new Span<byte>(s.Array, s.Offset + size, s.Count - count)이런 코드가 있는s.Count - count가 아니라그냥 type의 사이즈만큼 주면 안되는건가요? 우리가 필요한 부분은 딱 사이즈만큼 이라고 생각해서 그렇습니다!s.Count - count 는 4094? 이런식으로 나오는굳이 그만큼 받아와야 하는지 궁금합니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발!
Render Texture 관련 문의
안녕하세요. 강의 잘 수강하고 있습니다. 다름이 아니라 Render Texture에서 RawImage에 Texture #Heroes 를 넣었을 때 모양이 저와는 다르게 나와서 문의드립니다.강사님과 동일한 값으로 카메라 및 Circle 컴포넌트 값을 입력해도 저는 아래와 같은 모습이 나옵니다.반면 영상에서는 Circle이 더 작게 표시되는데, 혹시 이유가 궁금해서 질문 드립니다.감사합니다.
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
UI 연동방식에 대해서 질문드립니다.
하나의 예시를 들자면 HP를 UI에 표시할때 저는 Playercontroller에서 프로퍼티로 set를 해주었는데 강사님께서 올려주신 프로젝트를 보니 action을 통해서 해당 UI 스크립트에서 처리하신 것 같더라구요..제가 한 방식으로 구현을 해도 되는지 궁금해서 질문을 드립니다...강사님께서 하신 방식은 어디서 구독 신청을 해줬는지 찾기가 너무 어렵더라구요 ㅠㅠ
-
미해결따라하면서 배우는 고박사의 유니티 하이퍼캐주얼게임 시리즈 02
블록 상하로 데칼코마니가 되고 있습니다.
게임에서 블록을 배치 하면 상하가 반전 되어 컬러가 찍히네요; 어디서 잘못 되었는지 찾기가 힘듭니다 ㅠ,.ㅠ. 블록을 아래쪽에 배치 하면 포그라운드 컬러가 뒤집혀서 데칼 코마니가 되고 있어요; 어느 부분을 봐야 할까요
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
Destroy() 지연 파괴에 관하여
QuestSystem구현 강의에서 12:51쯤에 Destroy(quest, Time.deltaTime)을 사용했는데 바로 파괴해도 될 것 같은데 한 프레임을 쉬는 이유가 있나요?즉시 파괴할 경우 이벤트나 다른 참조하는 곳에서 error가 날까봐 그런건가요?
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
SingletonBehaviour 수업 마지막 부분에 질문이 있습니다.
해당 수업 마지막에 솔루션 빌드를 하셨는데 이유가 궁금합니다.유니티에서 코드를 작성하고 에디터로 돌아와 리로드를 하는것과 솔루션 빌드를 하는것에 차이가 있는지 궁금합니다!
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
스킬 구현 질문
잘 듣고 있습니다 강사님. 롤로 치면 그레이브즈 Q 를 구현하고 싶은데 Action을 Spawn Skill Object Action으로 하고 비슷한 파티클을 써서 해보니제 위치에서 나가는게 아니라 클릭한 기준으로 직선으로 나가더라구요 여러가지 방법을 시도 해보고 있는데 어떻게 해야할지 조언 부탁 드립니다!