묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
통일된 Stat을 사용하지 않고 모듈화 방식으로 Stats를 만드신 이유가 궁금합니다.
모든 Entity가 통일된 Stat들을 가진다는 가정을하고통일된 Stats를 사용하는 것(롤에서 이런방식이라고 추측하고있습니다) 과 달리 강의처럼 필요한 Stat만 모아 Stats를 만드는 이유가 궁금합니다.
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Effect에 기능 확장에 대해서 질문이 있습니다.
강사님 Effect 에 추가적인 기능 구현에 대해 궁금한 점이 있어서 질문드립니다.현재 강의의 Effect는 Start, Apply, Release의 세 가지 타이밍을 이용해서 여러 부가 효과를 주는 것으로 이해했습니다.(stat을 증가시키기, damage주기)그런데 만약 죽음 저항, 마법 시전시 추가 피해,,받는 화속성 피해 무효화, 특정 종족에게 가하는 피해 증가 등 다른 논리적인 코드 안에서 이 Effect의 여부를 따져야 하는 경우에는 어떤 식으로 처리할 수 있을까요?예를 들어 죽음 저항의 Effect가 있다면 캐릭터의 TakeDamage의 코드 안에서이 Effect의 여부를 따지는 부분이 필요할텐데단순히 하드코딩으로 짜기엔 나중에 여러 효과들이 추가 되면 될 수록 감당할 수 없어질 것 같고 코드를 어떻게 확장 해야할지도 감이 잘 잡히지 않습니다.제가 보기에도 질문이 조금 난해 하지만결론은 이렇습니다.effect가 다른 많은 코드들에 영향을 주어야 할 경우 어떻게 안전하게 확장 할 수 있을까요?
-
미해결[Unity6] 함께 만들어가는 서바이벌 게임 개발 - 스팀 출시 도전기
Havecard
안녕하세요 선생님 혹시 HaveCard 만드는 영상은 어디에 있나요 ?? ㅠㅠ
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
혹시 유니티 프로젝트 자체를 공유해주실수도 있나요
이전에 작업한 프로젝트가 날아가버렸는데..
-
미해결[Unity] 함께 만들어가는 방치형 게임 개발
유료에셋 링크 부탁드립니다 ㅜㅜ
수업자료중 유료에셋들을 구매하고 싶은데, 링크를 알 수가 없네요 ㅜ 어디서 설치할 수 있을지 궁금합니다.
-
해결됨[Unity6] 함께 만들어가는 서바이벌 게임 개발 - 스팀 출시 도전기
skillMng질문
안녕하세요 선생님수강중에 헷갈린게 있습니다public void RegisterSkill(CardDB db, int level){SkillBase existing = activeSkills.Find(x => x.skillid == db.id );if (existing != null){existing.LevelUp(level);return;} SkillBase existing = activeSkills.Find(x => x.skillid == db.id ); 이 부분이 이해가 잘 안됩니다그리고혹시 지금 스킬 파트 하고 있는데 스킬카드 선택 할때마다 별표시 추가랑 ,타임 옆에 스킬구슬ui 에 스킬 들어가는거 강의가 없는데 혹시 없는건가요 ? 스킬이 나오질 않아요 ㅠㅠ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UI 불러오지 못함
제가 보기 편하게 하려고 Resources 폴더를 Resources 라고 이름을 바꿨습니다그리고 이름 때문에 안되는건가 하고 이름을 다시 수정하려니까 엑세스가 거부 됐다고 그것도 안됩니다 ㅜㅜ 이름 변경으로 인해 실행이 안되는건가요? 16분 부분입니다
-
해결됨[Unity6] 함께 만들어가는 서바이벌 게임 개발 - 스팀 출시 도전기
카드 DataBase - CardSelector.cs 와 SessionManager.cs 에 SelectedCard 함수에 대하여
우선 풍성한 내용의 강의에 항상 감사드립니다.1.SelectedCard 함수가 CardSelector 에서는 유아이에서 선택 관련한 함수이고 Session Manager 에서는 데이터를 다루는 듯 한데요. 이름을 좀 다르게 쓰는게 낫지 않을까요. 아니면 크게 상관이 없는 건가요.2.그리고 강의 전반에 걸쳐 Initalize 라고 쓰시는 거 같은데 Initialize 를 줄여서 임의로 쓰시는지도 궁금합니다. CardDB.cs 에서 CardDB 변수명을 db 로 간단히 사용하시는 부분은 차후에 다른 몬스터 db 나 혹은 게임이 확장되었을 시에 좀 혼란스럽지 않을까 하는데 강사님의 의견이 궁금합니다
-
해결됨[Unity6] 함께 만들어가는 서바이벌 게임 개발 - 스팀 출시 도전기
Pooling 오류
안녕하세요 설명을 잘 해주셔서 몬스터 풀링 적용 했습니다 폰트 쪽에서 오류나는거 같은데 잘 모르겠습니다 ㅠㅠ돌려 보면서 코드 비교 했는데 해결 하지못해서 질문합니다 Parent of RectTransform is being set with parent property. Consider using the SetParent method instead, with the worldPositionStays argument set to false. This will retain local orientation and scale rather than world orientation and scale, which can prevent common UI scaling issues.UnityEngine.Transform:set_parent (UnityEngine.Transform)Object_Pool:Retrun (UnityEngine.GameObject,System.Action`1<UnityEngine.GameObject>) (at Assets/00_Scripts/Pool_Mng.cs:35)Pool_Mng:Add_Queue (string) (at Assets/00_Scripts/Pool_Mng.cs:90)Pool_Mng:Pooling_OBJ (string) (at Assets/00_Scripts/Pool_Mng.cs:67)Bullet:OnTriggerEnter (UnityEngine.Collider) (at Assets/00_Scripts/Bullet.cs:42)
-
해결됨[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
8주차 ExtralCell 추가됐을 때 서로 공격 못하는 상황 공유드립니다.
루키스님 따라 공격범위 수정전에 Creature들의 범위가 현재 cell에서 어떻게 됐을지 근본적으로 궁금했었습니다. 기지모로 표현해보니까 이해가 잘 돼서 공유드립니다.빨간 원이 CellPos이며노란 원이 사자와 곰에 ExtraCells를 1씩 했었을 때 모습입니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UI 자동화 #1 - Util.cs의 FindChild함수에서 component.name에 컴포넌트 이름이 뜹니다.
component.name에는 T 컴포넌트를 가진 게임 오브젝트의 이름이 와야 하는데, 게임 오브젝트의 이름이 아닌 컴포넌트의 이름이 옵니다. 예를 들면 FindChild<Button>이라면, component.name에 Button이 와, FindChild 함수가 계속 null만 return하는 상황입니다.(아래에 코드 첨부) 코드 문제가 아니라 오브젝트 이름 문제였네요,,ㅠㅠ 해결했습니다 UIButton.csusing System; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; public class UIButton : MonoBehaviour { // 타입별로 오브젝트를 저장 Dictionary<Type, UnityEngine.Object[]> _objects = new Dictionary<Type, UnityEngine.Object[]>(); [SerializeField] TextMeshProUGUI text; // Button 오브젝트의 이름들을 enum으로 저장 enum Buttons { PointButton, } enum Texts { PointText, ScoreText, } private void Start() { Bind<Button>(typeof(Buttons)); // enum은 Buttons인데, Button 컴포넌트를 가진 오브젝트에 매핑해주세요라는 의미 Bind<Text>(typeof(Texts)); Get<Text>((int)Texts.ScoreText).text = "Bind Test"; } void Bind<T>(Type type) where T : UnityEngine.Object { // 1. 딕셔너리에 enum 요소 수만큼 빈 object 배열 넣어주기 string[] names = Enum.GetNames(type); // enum값들이 names에 string으로 담김 UnityEngine.Object[] objects = new UnityEngine.Object[names.Length]; _objects.Add(typeof(T), objects); // 2. 실질적인 컴포넌트(오브젝트) 찾기 for (int i = 0; i < names.Length; i++) { objects[i] = Util.FindChild<T>(gameObject, names[i], true); } } T Get<T>(int idx) where T : UnityEngine.Object { UnityEngine.Object[] objects = null; if (_objects.TryGetValue(typeof(T), out objects) == false) return null; return objects[idx] as T; } int score = 0; public void OnButtonClicked() { score++; text.text = $"Point : {score}"; } } Util.csusing Unity.VisualScripting; using UnityEngine; public class Util { // go는 최상위 오브젝트 / recursive는 그 자식뿐만 아니라 자식의 자식도 계속 파고들며 찾을건지 여부 public static T FindChild<T>(GameObject go, string name = null, bool recursive = false) where T : UnityEngine.Object { if (go == null) return null; if (recursive == false) { for (int i = 0; i < go.transform.childCount; i++) { Transform transform = go.transform.GetChild(i); if (string.IsNullOrEmpty(name) || transform.name == name) { T component = transform.GetComponent<T>(); if (component != null) return component; } } } else { foreach (T component in go.GetComponentsInChildren<T>()) { if (string.IsNullOrEmpty(name) || component.name == name) return component; } } return null; } }
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
공부 방향에 대해 궁금한 점이 있습니다.
안녕하세요. 좋은 강의 잘 보고 있습니다.완전 초보의 입장에서 이 강의에서 뿐만이 아니라 지금까지 공부해 오면서 쭉 궁금했던 부분이 있는데요. 강사분처럼 숙련자 분들은 작성한 스크립트들의 관계성이라던가 함수 내용들을 머릿속에 다 기억을 하고 계시는지 궁금합니다. 저의 경우에는 강의 하시는 내용 자체는 하나의 스크립트 분량이 작아서 그때 그때 이해는 되는데요. 이 테스크 강의에서만 봐도 스크립트가 12개가 만들어지는데 이렇게 만들어진 클래스들간의 관계나 함수 같은 것들을 전부 기억하기에는 무리가 있는데 이게 정상인지 비정상인지를 알고 싶습니다. 앞으로 계속 공부를 해 나간다면 이러이러한 부분이 늘게 될거다 하는 부분이 있을까요? 주변에 길잡이를 해줄 사람이 없으니 이런 부분이 불투명하고 어렵게 느껴집니다. 머릿속의 생각을 제대로 표현하지 못하고 너무 중구난방 쓰여진 거 같은데 제 생각이 최대한 잘 전달 되길 바랍니다.
-
해결됨[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
Interpolation & Server Tick Frequency
Hey,I have a question server in main loop dont limit execution time, everything happen withouth deltatime only base on JobSerializer Timer. So in the end we dont really know if server is working with 200 ticks per second or 15. Does this approach isnt affecting player objects latency? Does _lastSendTick = System.Environment.TickCount64; is enough to interpolate beetween player last postion and current? static void GameLogicTask() { while (true) { GameLogic.Instance.Update(); Thread.Sleep(0); } }
-
해결됨[Unity] 멀티플레이 게임 필수 기능 구현 - 서버 & 데이터 관리까지!
거절 버튼 action에서 RPC 관련 질문
Action No에서 Action NO = () => { ToastPopUPManager.Instance.Initialize("파티 초대를 거절하였습니다ㅠㅠ"); photonView.RPC("IgonrePartyInvite", PhotonHelper.GetPlayer(inviterID), inviterID); }; 강의에서는 IgnorePartyInvite의 인자로 TargetPlayerIndex를 넘겨주는데, 저는 실행이 안 되서 inviterID로 넘겨주니 정상적으로 실행 되더라구요. 해당 action이 RPC안에서 정의 된 거라서 상대 기준에서 다시 내 기기로 함수를 실행시키기 위해서는 inviterID로 넘겨주는 게 맞지 않나요..?RPC관련 개념이 아직 미숙해서 질문해봅니다.
-
미해결절대강좌! 유니티 6 - TPS 게임으로 배우는 유니티 마스터클래스
Stun 로직 관련해서 문제가 발생합니다.
BehaviorGraph - Stun 로직 에서 15분 45초에 만든 사망 시 폭발 로직이 저는 폭발하고 5초뒤에 사라질 때 다시 폭발하는 현상이 발생하는데 이유가 뭘까요..
-
해결됨[Unity6] 나만의 서바이벌 게임 만들기
Inventory #1
양질의 강의 감사드립니다.강사님과 같은 정상적인 플레이 시에는 특별한 문제가 없습니다. 나무를 베고 아이템을 획득하고 갯수가 잘 들어오고 이어서 아이템 획득했을 때도 그렇구요. 하지만, 먼저 I key 를 누르고 빈 창을 연 상태에서 나무를 베면 아이템이 들어오지 않는데요. 다시 I key 를 여러번 토글해 보아도 마찬가지구요.이어서 나무를 베어도 아이템이 획득 되지 않는데, 무슨 문제 인지 궁금합니다.
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
SkillData 구조체 질문
갑자기 궁금해져서 질문드려봅니다. SkillData, EffectData등이 struct로 구현되어 있는데,struct 내부에 참조타입이 많은 상황이잖아요? 이럴 경우 struct 내부의 참조타입이 얕은 복사가 일어날 수 있어 에디터의 추가 버튼에서 DeepCopySerializeReference 메소드를 구현해 사용 중인 것 같은데,SkillData, EffectData등을 class로 구현해 IClonable을 상속받아 Clone 메소드로 추가시키는 것과 어떤 차이가 있을지, struct로 구현을 하신 이유가 있는지 등이 궁금합니다.
-
해결됨절대강좌! 유니티 6 - TPS 게임으로 배우는 유니티 마스터클래스
Bullet, AimDot 코드 질문
오브젝트 풀링 - PoolManager 구축 32분 15초 5초 뒤에 사라지게 하는 invoke를 사용했는데, 총알 발사 후 물체에 맞고 사라진 후에 다시 발사되기까지 5초가 걸리지 않으면, 총알이 발사되자마자 사라지는 현상이 발생하는 것 같습니다. 이러한 현상을 해결하는 방법이 있을까요?인터페이스 활용한 피격 데미지 구현 6분 56초 Update에서 실행되던 Aim Dot 색 바꾸는 코드를 Fire로 옮기면 Fire할 때만 색이 바뀌는데, 해당 부분만 다시 업데이트문으로 옮겨주면 될까요?
-
해결됨[Unity6] 나만의 서바이벌 게임 만들기
Item 연출 13:24 - Asset Manager 를 거쳐서 데이터를 가져오는 이유
안녕하세요. 좋은 강의 감사드립니다.Scriptable 데이터에서 가져오는게 직관적일 거 같은데 굳이 Asset manager 를 통해서 데이터를 가져오는 이유가 궁금합니다
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
수업자료 다운로드 방법이 궁금합니다.
안녕하세요. 혹시 수업자료를 어떻게 다운 받는지 알 수 있을까요?섹션 3에 [보충] 에셋 관련 에서 언급해주신 자료를 다운 받으려고 하는데,찾기가 어렵네요. 올려주신 다른 강의 중 실전 게임 코드리뷰 엘리스팡도소스 코드랑 아트 리소스를 제공해주신다고 되어있는데,아무리 찾아도 다운로드 링크가 보이지 않아요. 감사합니다.