distance 노출값이 수업 노출값과 상이하게 노출됩니다. 확인부탁드립니다.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
distance 값이 수업과 다르게 노출됩니다.
- C#
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
distance 값이 수업과 다르게 노출됩니다.
미해결
ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0
ppt에 있는거 너무 옛날거라 인터페이스가 다릅니다. 영상으로 spl 최신버전 설치 및 실행 방법 좀 올려주시면 감사하겠습니다.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
릴리즈 모드로 해도 디버그 모드랑 동일하게 출력되는데 뭐가 문제인가요? using System.Threading; namespace ServerCore { internal class Program { // 전역이기 때문에 쓰레드들이 동시에 접근 가능 static bool _stop = false; static void ThreadMain() { Console.WriteLine("쓰레드 시작!"); while(_stop == false) { // 누군가가 stop 신호를 해주기를 기다린다 } Console.WriteLine("쓰레드 종료!"); } static void Main(string[] args) { // Thread t = new Thread(ThreadMain); Task tt = new Task(ThreadMain); tt.Start(); // 1초 존야 후 다시 실행 Thread.Sleep(1000); _stop = true; Console.WriteLine("stop 호출"); Console.WriteLine("종료 대기중"); tt.Wait(); // t.Join(); 과 동일 Console.WriteLine("종료 성공"); } }
미해결
[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
안녕하세요세이브 하기전에 데이터 클리어 하면 저장 가능한건가요?...헷갈리네요
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
textRPG 직업고르기 강의에 관해서 질문합니다. enum 타입으로 ClassType을 선언해서 직업을 열거하고. Main 함수에서 ClassType choice = ClassType.None; 라고 선언해주는데 ClassType.None; 은 무슨의미일까요..? 왜 .None 으로 지정해주는건지 이해가 안됩니다 🥲
미해결
[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
public void LoadAllAsync<T>(string label, Action<string, int, int> callback) where T : Object { var opHandle = Addressables.LoadResourceLocationsAsync(label, typeof(T)); opHandle.Completed += (op) => { int loadCount = 0; int totalCount = op.Result.Count; foreach (var result in op.Result) { if (result.PrimaryKey.Contains(".sprite")) { LoadAsync<Sprite>(result.PrimaryKey, (obj) => { loadCount++; callback?.Invoke(result.PrimaryKey, loadCount, totalCount); }); } else { LoadAsync<T>(result.PrimaryKey, (obj) => { loadCount++; callback?.Invoke(result.PrimaryKey, loadCount, totalCount); }); } } }; } 해당 함수는 이렇게 작성되어있고 .sprite 로 보아 확장자를 .sprite 를 찾는것같은데 어드레서블 그룹에는 .png 로 되어있습니다 혹시 이것때문에 그러는걸까요?
해결됨
[유니티6] 따라하면서 배우는 실전 게임 제작 2D Platformer
Platform_Moving에 Platform Effector Expention 스크립트를 적용해봤는데 올라타는것과 밑에서 올라타는 기능은 가능하나 움직이는동한 플레이어 오브젝트를 자식으로옮겨 플랫폼에 고정하는 기능은 작동이 안되네요 방법이 없을까요
미해결
[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
안녕하세요 나중에 출시 할때 리소스는 사용 금지 라고하셨는데 만약 픽셀이나 다른거 적용할때 애니메이션은 변경하거나 뼈대같은거 사용못하면 어떻게 해야할지 ㅠㅠ 이미지 변경하면 호환하는방법 알수있나요...?? 어떻게 내 게임을 만들어야할지 막막해서 질문해봤습니다 ㅠ
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
만약 한 쓰레드에서 ReadLock과 WriteLock이 전부 호출된다고 했을 때 반드시 호출의 역순으로 Unlock을 호출해야 되나요? 아래는 C#에 구현돼있는 ReaderWriterLockSlim 클래스를 사용하여 실행한 예시입니다. class Program { static ReaderWriterLockSlim _lock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); static void Main(string[] args) { Task.WaitAll( Task.Run(() => { _lock.EnterWriteLock(); _lock.EnterReadLock(); Thread.Sleep(5000); _lock.ExitWriteLock(); _lock.ExitReadLock(); })); } } WriteLock -> ReadLock -> WriteUnlock -> ReadUnlock 순으로 호출했고 정상적으로 작동합니다. 강의에서 구현한 ReaderWriterLock을 사용해도 예외가 발생하지는 않습니다만 위의 순서로 호출하면 flag가 엉망이 됩니다. public void WriteUnlock() { int lockCount = --_writeCount; if (lockCount == 0) Interlocked.Exchange(ref _flag, EMPTY_FLAG); } 동일한 쓰레드가 ReadUnlock을 호출하지 않은 상태에서(즉 read count가 0이 아닌 상태에서) WriteUnlock을 호출할 경우 flag가 0으로 초기화되기 때문에 이후에 ReadUnlock을 호출할 경우 flag가 -1로 초기화됩니다. 제가 생각하기엔 굉장히 특이한 케이스고 실제로 함수가 재귀적으로 호출되기 때문에 발생할 일은 없다고 보는데요...혹시라도 휴먼에러로 위와 같은 상황이 벌어질 경우를 대비해서 예외를 추가하거나 WriteUnlock 로직을 수정해서 'EMPTY_FLAG'가 아닌 '_flag & READ_MASK'를 대입하면 어떤가요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
현재 아래와 같이 실행되어 나옵니다. 강의와 같이 나올려면 어디서 설정해야 하나요? 실행시 모양 강의에서 나오는 모양
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
대리자로 소트를 오름차순, 내림차순을 쉽게 구현할 수 있다고 하셨는데 namespace 4. 델리게이트 { internal class Program { delegate void Sort(int[] arr); static void MinSort(int[] arr) { int id; for(int i = 0; i < arr.Length - 1; i++) { id = i; for (int j = i + 1; j < arr.Length; j++) { if (arr[j] < arr[id]) id = j; } int temp = arr[id]; arr[id] = arr[i]; arr[i] = temp; } } static void MaxSort(int[] arr) { int id; for (int i = 0; i < arr.Length - 1; i++) { id = i; for (int j = i + 1; j < arr.Length; j++) { if (arr[j] > arr[id]) id = j; } int temp = arr[id]; arr[id] = arr[i]; arr[i] = temp; } } static void PrintArr(int[] arr) { foreach (int a in arr) Console.Write(a + " "); Console.WriteLine(); } static void Main(string[] args) { // delegate (대리자) 사용 빈도 높음 주의 int[] arr = new int[] { 20, 10, 40, 50, 15 }; Sort[] sort = new Sort[] { MaxSort, MinSort }; string str = Console.ReadLine(); switch (str) { case "max": sort[0](arr); break; case "min": sort[1](arr); break; } PrintArr(arr); } } } 혹시 이것도 그 편한 방법에 포함되는 코드라고 할 수 있을까요? 그리고 Sort sort = MaxSort; sort += MinSort; 이렇게 두개의 함수를 추가한다하면 제가 위에서 보낸 코드 처럼 sort[0]으로 접근이 안되는데 어떻게 접근해야할까요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
제네릭은 c++ 템플릿이랑 같다고 생각하면 될까요?
미해결
[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
WebManager의 아래 코루틴 CoSendWebRequest에서 yield return uwr.SendWebRequest(); 부분을 통해서 request를 보내는 것까지는 이해를 했는데, 제가 알고있기로 코루틴에서 yield return 을 호출할 경우, 다음 프레임에서 코드가 이어서 실행되는 것으로 알고있는데요. response를 언제 받을 지 모르는 상황이니까 별도로 response를 받았을때의 콜백을 입력해서 처리하는 것이 아닌가 생각했었는데, 실제 코드에서는 아래와 같이 바로 이어서 response를 받았을 때 처리되는 부분을 입력하고 있고, 또 이게 제대로 작동을 하니 잘 이해가 안됩니다. 아래와 같은 경우라면.. 다음 프레임 이전에 무조건 response가 온다는 확신이 있다는 것으로 이해가 되는데, 어떻게 이 부분을 확신할 수 있는건가요? using (UnityWebRequest uwr = new UnityWebRequest(sendUrl, method)) { uwr.uploadHandler = new UploadHandlerRaw(jsonBytes); uwr.downloadHandler = new DownloadHandlerBuffer(); uwr.certificateHandler = new CertificateWhore(); uwr.SetRequestHeader("Content-Type", "application/json"); yield return uwr.SendWebRequest(); if (uwr.result == UnityWebRequest.Result.ConnectionError) { Debug.Log($"CoSendWebRequest Failed : {uwr.error}"); } else { T resObj = JsonUtility.FromJson<T>(uwr.downloadHandler.text); res.Invoke(resObj); } }
미해결
[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
과정 중에 사운드 리소스 추가는 없나요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
static int Factorial (int n) { return n * Factorial(n-1); } static void Main(string [] args) { int ret = Factorial(5); Console.WriteLine(ret); } Factorial(5)가 int ret으로 할당되었고, Factorial(n)이므로 n이 5로 삽입되었다는걸까요? static int Factorial 구문에서 반환값이 return n * Factorial(n-1); 이렇게 표기되어 있어서 n-1 이므로 Factorial(5)가 나오기 위해서는 n에 6이 할당되어야 하는게 아닌가요? 각각 static 구문의 의미랑 로직이 어렵네요 핳 모르겠습니다 도와주세영 .. 🥲
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
안녕하세요. 선생님은 이중 포문에 j의 초기값을 i로 두었는데요 i + 1로 두는게 더 효율적이지 않나요? minindex의 값은 i일테고 i다음 인덱스부터 비교하는 건데 j가 i의 인덱스를 갖고 있다면 arr[i] < arr[j(즉 i)] 같은걸 비교하니까 비효율적인 루틴하나가 더 추가된 게 아닌가 싶어서요! static void SortArr(int[] arr) { int minindex = 0; for (int i = 0; i < arr.Length; i++) { minindex = i; for (int j = i + 1; j < arr.Length - 1; j++) { if (arr[j] < arr[minindex]) minindex = j; } int temp = arr[i]; arr[i] = arr[minindex]; arr[minindex] = temp; } } 저는 이렇게 구현해봤는데 선생님이랑 다르니까 좀 불안해지는 느낌이더라구요 또 j가 i+1이라면 arr의 길이 -1만큼 조건식을 둬도 되는 거지요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
안녕하세요. SuperKnight 객체에 Player를 상속받고 있는 Knight객체를 상속 받았는데, override를 통해 SuperKnight 객체에도 Move함수를 구현했습니다. class SuperKnight : Knight // 이중 상속 { public override void Move() { base.Move(); Console.WriteLine("SuperKnight 이동!"); } } 그후 main에서 SuperKnight superKnight = new SuperKnight(); superKnight.Move(); Move 함수 호출 시 최상위 부모(Player), 부모(Knight), 자식(SuperKnight)의 Move함수가 순차적으로 콜 되던군요.(아래처럼) Player 이동! Knight 이동! SuperKnight 이동! 이게 맞는 거죠?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
안녕하세요. C# 기본 문법 클래스 형식 변환에서 EnterGame함수를 통해 인자로 들어오는 player를 Mage로 형변환하여 Mage타입만 들고 있는 필드(int mp)를 수정하는 걸 보여주셨는데, 이렇게 되면 knight 타입의 함수도 따로 만들고, 다른 직업도 따로 만들어야 하는 거 아닌가요? 저 함수 하나로 모든 직업을 커버하는 방법은 어떤게 있을까요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
안녕하세요 유니티짱 폴더를 강의와 같이 정리하다 보니, 위 경고 메시지가 떴습니다. 그런데 해당 위치는 Dictionary 등 유니티 모노비헤비어 에서 상속받은 게 아닌데... 왜 뜨는 걸까요? 그것도 유니티짱 경로 정리 하다가 그런 경고가 갑자기 뜨는 이유를 알 수가 없습니다.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
연습문제중 팩토리얼 구현에 있어서 질문 드립니다. static int Factorial(int a) { for (int i = a - 1; i >= 1; i--) { a *= i; } return a; } static void Main(string[] args) { int ret = Factorial(3); Console.WriteLine(ret); } 이 구현도 괜찮을까요?