안녕하세요. 관련 프로젝트 클론 코딩하던 중, 질문이 생겨서 적어봅니다. 목표 : 누적확률(시행마다 가중치 X) 없이 독립시행으로, 확률에 따른 이벤트 발생 #과정 1. float _rand = Random(0f,1f) ===== #과정2. 0.5f를 기준값으로 계산 ex)시행 1: _rand = 0.6f 시행 2: _rand : 0.2f => 시행 1 -> 1 - 0.6 = 0.4f =>시행 2 -> 0.5보다 낮으므로 0.2f ===== #과정3. 2에서 계산된 _rand값을 기준으로 해당되는 확률 테이블의 데이터를 가져올 때, 시행 1 -> 0.4f이므로, acqPercent 0.4 이하인 요소들을 전부 List로 끌고 온 뒤, 그 List에서 랜덤으로 뽑음 ===== 질문 : 이러면 처음에 rand로 나온 값이 의미가 없어지고 rand 미만의 요소들이 담긴 list에서, 1/list 갯수 만큼의 확률로 계산되는거 같은데 ( 원래 설정한 0.005, 0.1 이런건 무시되고 ) 아예 확률표를 잘못 작성했다던가 계산법이 잘못된거 같은데 잘 모르겠습니다 ㅠㅠ 참고자료 : 엑셀 표 ( 총 확률은 0.7 , 나머지 0.3은 아무것도 발생시키지 않도록 설정)
6월 15일 같은 질문이 나왔었는데요, 해당 질문글에 답변으로 적어주신 방법을 써서 스프라이트로 변환해서 잘 돌아가긴 하는데요, 아직 이해가 되지 않아 추가질문 드립니다. 강의에서는 texture로 받지 않기 위해 ResourceManager.cs에서 키값을 EXPGem_01.sprite[EXPGem_01]으로 바꾸는 과정을 거쳤는데요, 그럼에도 불구하고 왜 변환이 안된 건가요? 강의에서는 잘 작동하는 것처럼 보입니다만,.. 혹시 유니티 버전에 따라 작동을 안하는 것일까요? 현재 22.3버전으로 쓰고 있습니다. 강의상 10분쯤에 해당내용 있습니다. 감사합니다.
1. Resources.Load 함수를 사용하는 것은 성능상 좋지 않아 잘 안쓴다고 들었었는데 사용할 리소스들을 Inspector창에서 다 받아서 사용하는 방법은 너무 노과다 일거 같고 지금과 같은 구조라면 저걸 사용하는데에 있어선 무리가 있다는 생각이 들어서 궁금합니다. 2. 저런 리소스들을 관리 하는데 Dictionary 말고 List가 성능상으로 훨씬 좋다고 들었습니다. 그런데 List를 사용하면 탐색 시간에서 오래 걸리지 않을까라고 생각 하는데 이 부분은 어떤식으로 관리하나요 ?
State Machine #1 강의 말미에 Fixed Duration의 체크 여부에 따라 Exit Time과 Transition Duration 내에 기입된 수치가 비율에서 초로 변환된다고 말씀하습니다. 제가 이것저것 만져본 결과 Exit Time은 Fixed Duration 체크 여부에 상관 없이 무조건 비율인 것 같습니다. 반면에 Transition Duration은 Fixed Duration이 체크되었을 때는 초, 그렇지 않을 때는 비율로 적용되는 듯합니다. 확인 부탁드립니다.. https://docs.unity3d.com/kr/2018.4/Manual/class-Transition.html
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요 루키스님. MMORPG 시리즈 Part7 화살 #1 ~ 화살 #2 를 수강하다가 궁금한 점이 있어서 질문을 올립니다. 궁금한 부분은 화살을 생성하는 부분인데요. 제가 이해하기로는 화살 스킬을 사용하는 과정이 클라에서 스킬 사용 패킷을 보냄(C_Skill) -> 서버 C_SkillHandler를 거쳐 GameRoom.HandleSkill 에서 처리 -> 이 때 GameRoom.EnterGame(Arrow)로 화살 입장 -> 본인 클라이언트와 다른 플레이어의 클라이언트에 스폰패킷(S_Spawn)을 보냄 ->각 클라이언트에서 ObjectManager.Add로 화살을 스폰하는 것으로 이해했습니다. 강의 코드에서, Gameroom에서 EnterGame(Arrow)를 실행하면 Arrow는 Projectile 타입이므로 if 문에 걸려 본인 클라에 Spawn패킷을 뿌리지 않고 다른 클라에만 뿌리는 것으로 작성이 된것 같은데... Player 타입이 GameRoom의 인자로 들어왔을 때만 본인 클라에 패킷을 전송하는 것 같거든요. 그런데 실행하면 화살이 잘 날아갑니다. 어느 단계에서 화살이 생성되는지 모르겠습니다. 어느 부분을 잘못 이해했을까요? 강의 코드 그대로 입니다. public void EnterGame(GameObject gameObject) { if (gameObject == null) return; GameObjectType type = ObjectManager.GetObjectTypeById(gameObject.Id); lock (_lock) { if (type == GameObjectType.Player) { Player player = gameObject as Player; _players.Add(gameObject.Id, player); player.Room = this; Map.ApplyMove(player, new Vector2Int(player.CellPos.x, player.CellPos.y)); // 본인한테 정보 전송 { S_EnterGame enterPacket = new S_EnterGame(); enterPacket.Player = player.Info; player.Session.Send(enterPacket); S_Spawn spawnPacket = new S_Spawn(); foreach (Player p in _players.Values) { if (player != p) spawnPacket.Objects.Add(p.Info); } foreach (Monster m in _monsters.Values) spawnPacket.Objects.Add(m.Info); foreach (Projectile p in _projectiles.Values) spawnPacket.Objects.Add(p.Info); player.Session.Send(spawnPacket); } } else if (type == GameObjectType.Monster) { Monster monster = gameObject as Monster; _monsters.Add(gameObject.Id, monster); monster.Room = this; Map.ApplyMove(monster, new Vector2Int(monster.CellPos.x, monster.CellPos.y)); } else if (type == GameObjectType.Projectile) { Projectile projectile = gameObject as Projectile; _projectiles.Add(gameObject.Id, projectile); projectile.Room = this; } // 타인한테 정보 전송 { S_Spawn spawnPacket = new S_Spawn(); spawnPacket.Objects.Add(gameObject.Info); foreach (Player p in _players.Values) { if (p.Id != gameObject.Id) p.Session.Send(spawnPacket); } } } }
안녕하십니까? 현재는 For문 실습 2탄을 보고 있는 사람입니다. 다름이 아니라 회사에서 유니티를 하고자 C#을 같이 공부하고 있는데, 지금까지 강의를 중간에 빼먹는것 없이 다 보고 있습니다만, 솔직히 저의 실력으로는 강의만 보고는 이해하지 못하고 따라가기만 하는 것 같아서 책이랑 같이 공부하면 좋을 것 같습니다. 다행히 이 강의가 기간제가 아니라서 얼마든지 다시 공부할 수는 있지만, 이왕이면 책이랑 같이 봐야 머릿속에 더 잘 들어올 것 같아서 이런 질문을 남깁니다. 혹시 같이 볼만한 책을 추천해주실 수 있으신가요? 그리고 저술하신 책이 있는지도 궁금합니다.
안녕하세요, 비주얼스튜디오 툴과 관련하여 질문이 있습니다. 강의영상 내 루키스님 비주얼스튜디오를 보면 솔루션에 프로젝트가 1 프로젝트의~라고 뜨는데요, 저는 83개의 프로젝트가 포함되었다고 나옵니다. 아래 사진처럼 Assembly-CSharp 이외의 프로젝트들을 언로드하면 빌드에러가 나는 문제가 생기는데요, 강의하시는 화면내 솔루션은 어떻게 프로젝트가 1개만 로드되어있는지 궁금합니다. 감사합니다. 그리고, 좋은 강의 만들어주셔서 감사합니다. 제가 오랫동안 찾던 이상적인 개발강의이기에, 정말 감사히 생각하며 듣고 있습니다. 건강하세요.
C# 입문부터 Xamarin Forms(자마린 폼즈) + Maui(마우이) 안드로이드, 윈도우 앱(UWP) 동시에 만들기
동영상 중에 cw+<tab>+<tab> 이렇게 탭을 두번 누르면 Console.WriteLine(); 이 나오는 기능이 있는데, 저는 cw+<tab> 이렇게 탭을 한번 누르면 나옵니다. 왜 그런가 하고 검색해 봤더니, 옵션 중에 실험적 기능이 자동으로 체크가 되어 있네요. 도구>옵션>텍스트 편집기>C#>IntelliSense 들어가서, "새 코드 조각 환경 표시(실험적)" 의 체크를 해제하니 강사님처럼 cw+<tab>+<tab> 단축키를 사용할 수 있었습니다. 출처: https://stackoverflow.com/questions/75167487/code-snippets-dont-work-every-time-after-new-vs-2022-update
[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작 마지막 올려주신 소스 자료를 다운받아보니, Addressables group 이 하나도 없습니다. 버전이 맞지 않아서 발생한 문제인가 생각하여, 강의에서 사용한 2021.3.19f1 으로 실행해봐도 동일하게 에러가 발생합니다.