묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[Unity6] 함께 만들어가는 서바이벌 게임 개발 - 스팀 출시 도전기
12강 몬스터 파괴 진행하던 중 애니메이터 이슈를 하나 발견해서 남깁니다.
앞으로의 강의에서 충분히 해결될 이슈 같지만, 그래도 12강에서 테스트 하시다가 의문을 가지실 분들도 계시지 않을까 싶어서 질문 하나 남깁니다. 이 이슈가 나중에 몇 강 강의에서 해결되는지 또는 간단하게 해결할 수 있는방법을 알고 싶습니다. 강의 내용 27분 22~34초대에서 스켈레톤이 움직이지 않고 앞으로만 움직이는 현상이 목격됩니다.애니메이터의 MOVE 트리거가 발동되기 전에 스켈레톤이 비활성화되면서 생긴 이슈 같습니다. 실제로 강의 내용을 따라하다보면 똑같은 시점에서 같은 문제가 발생합니다.스켈레톤 A는 애니메이션이 정상 작동하는 대상이고 스켈레톤 B는 애니메이션이 작동하지 않은 채 앞으로만 움직이는 대상입니다. 앞으로 다양한 몬스터가 나올 것을 기대하고 있기에, 충분히 추후에는 해결되는 이슈라고 생각하고 있습니다.그래도 혹시나 12강에서 똑같은 이슈를 만나시고 궁금해하시는 분들이 계실까봐 가볍게 내용을 남깁니다.
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
onnx에 대해서
MLAgent환경학습에 보면 학습이 끝나면 결과로onnx파일이 생성된다고 나와있는데DQN을 직접짜는 실습2에서도 맨마지막에 학습이 종료되면 onnx파일이 생성되는건가요? 제 경우엔 생성되지 않던데..1. 직접짜는 방식으로도 onnx는 생성되는게 맞는지2. 생성되지 않는다면 직접짜는 방식으로 어떻게 생성할수 있는지이 두가지가 궁금합니다.
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
텐서플로우가 안열립니다
학습은 잘진행되는거같은데 이렇게 있는데 텐서보드에 가면 이렇게 뜨네요 어떻게 하죠?
-
해결됨[Unity6] 함께 만들어가는 서바이벌 게임 개발 - 스팀 출시 도전기
10. Object Pooling 단계에서 스폰 포지션 이슈가 생겼습니다.
10강까지 강의를 따라오면서 강의를 누락한 부분이 있기 때문에 생기는 이슈인지 궁금합니다. 누락으로 생긴 이슈라면 드릴 말씀은 없지만, 다른 분들도 따라하시다가 당황하실 수 있는 이슈로 여겨져서 글을 남겨 봅니다. 몬스터를 풀링하면서 몬스터가 생성될 때 프리팹에 적혀있는 좌표로 우선 생성되니까 해당 좌표에서 충돌 처리가 생기는 것 같습니다.몬스터 생성몬스터가 프리팹에 적혀 있는 0,0,0 위치에 생성0,0,0 위치에서 콜라이더 충돌이 발생함 value.transform.position = spawnPos; 작동작동하면서 좌표 값 변경이후 강의에서 해결됐을 가능성이 농후하지만, 10강까지 따라왔을 때 누구에게나 생길 수 있는 이슈라고 느껴져서 글을 남깁니다. 몬스터 프리팹의 포지션 값을 변경하면서 일단 해결하였는데 제가 놓친 부분이 있었다면 참고하겠습니다.
-
미해결[Unity] 함께 만들어가는 방치형 게임 개발
Pool_Mng, Base_Mng 참조
안녕하세요 강사님! 수업 유익하게 잘 수강 중 입니다! 다름이 아니라,BaseMng, PoolMng 구현 중 궁금한 점이 생겨 질문드립니다. BaseMng의 경우 PoolMng를 관리하고 있고, PoolMng에서는 BaseMng.instance.InstantiatePath() 등으로 BaseMng를 참조하고 있는데, 추후에 순환참조되는 문제가 발생하지는 않는지 궁금하여 질문드립니다. 좋은 강의 제공해주셔서 감사드립니다!
-
미해결절대강좌! 유니티 6 - TPS 게임으로 배우는 유니티 마스터클래스
딜레이를 주고 싶을 때 코루틴을 사용하는 이유
강의에서 코루틴의 개념은 계산이 오래 걸리는 작업을 다른 루프에서 도와주는 거라고 했는데 그저 머즐 플래쉬를 발생시킬 때 딜레이를 주려는 것뿐인데 코루틴을 사용하는 이유가 뭔가요? 계산이 복잡해 보이지 않는데요.yield return new WaitForSeconds(0.2f);"yield return [조건]" 조건을 만족할 때까지 메인 루프에 양보한댔는데 위 코드가 어떻게 나온 건지 이해가 안 됩니다. 코루틴을 정확히 언제 쓰는 것인지 개념을 확실하게 알고 싶습니다.
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
Lobby 프리팹 구성 질문
안녕하세요!제공해주신 강의 도움이 많이 되고 있습니다.Lobby 씬 구조 및 디자인 패턴 (LobbyManager, LobbyUIController)강의 질문있습니다.Q. "LobbyManager, LobbyUIController를 구분하여 관리하자" 이해했습니다.궁금한 부분은 해당 cs 파일들을 프리팹화 할때, 2개의 프리팹으로 나누었는데 1개의 프리팹에 몰아서 붙이고 Lobby라는 프리팹으로 관리해도 되지않을까? 라는 생각이 났는데 2개로 나누었을때 혹시 관리적인 부분에서 이점이 있을까요?Lobby 씬 구조 및 디자인 패턴 (LobbyManager, LobbyUIController)
-
해결됨유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
스팀 어드레서블
안녕하세요!강의를 듣다가 궁금한 점이 생겨서 질문을 드립니다.제가 지금 시작하는 프로젝트는 PC용 빌드로 스팀에 출시할 계획인데, PC는 어드레서블을 쓰는게 유의미한지 궁금합니다! 프로젝트는 싱글게임입니다.
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
DQN을 위한 파라메터값 세팅에서 goal-plus, goal-ex
state_size에서 [3, 64,84]면은 아 알쥐비하고 해상도를 이용해 스테이트사이즈를 세팅했구나를 알겠는데goal-plus하고goal-ex하고나뉘어져 있는 이유를 모르겠습니다.각각goal-plusgoal-ex는 어떤 의미의 집합인가요?
-
미해결[유니티 실전 프로젝트] Burger Please 모작
완제품 코드로 분석할려고 하는데. 작성 순서(흐름)이 이해가 안됩니다ㅠㅠ
처음에 없던 오브젝트풀링이들어가고나서 완성된 코드라 이해가 잘안되네요. 순서가 햇갈려요 어느 스크립트부터 따라 적어야하는지 말씀해줄수있을까요? 흐름이 이해가 안갑니다. 코드를 해석할 수 있도록 작성 순서를 알려주시면 감사 드리겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
질문 드립니다. string.IsNullOrEmpty(name)
else { foreach (T compo in go.GetComponentsInChildren<T>()) { if (string.IsNullOrEmpty(name) || compo.name == name) { return compo; } } } public static T FineChild<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 trf = go.transform.GetChild(i); if (string.IsNullOrEmpty(name) || trf.name == name) { T compo = trf.GetComponent<T>(); if (compo != null) { return compo; } } } } else { foreach (T compo in go.GetComponentsInChildren<T>()) { if (string.IsNullOrEmpty(name) || compo.name == name) { return compo; } } } return null; }string name =null 로 한 이유 -> enum에서 null 자체가 생성이 안되는데 저렇게 한 이유[연계질문]if (string.IsNullOrEmpry(name) 으로 component를 리턴하는 이유-> 이름이 없는데 왜 해당 컴포넌트를 리턴하는지.. 답변부탁드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요 취업 학원 관련해서 문의드립니다.
저는 30대 넘어서 코딩 입문하게된 비전공자입니다.기존에 웹개발하다가 게임개발 흥미가 느껴서 여기로 취업하고자하는데요 학원에서는 유니티 클라이언트 쪽으로 준비하는게 낫다고 해서 일단 유니티쪽 공부하고있습니다.아무래도 비전공자이다보니 CS지식도 부족하다고 느끼고 C/C++ 필요성도 느끼고 있는데요 취업시에 유니티클라이언트를 깊게 파서 구현하는것을 목표로할지CS공부겸 서버쪽도 조금 추가해서 공부하는것을 목표로 할지 고민이됩니다. 어느쪽이 더 나을까요? ㅠㅠ (일단 취업목표기간은 8개월~1년 잡고있습니다.)
-
미해결[Unity6] 함께 만들어가는 서바이벌 게임 개발 - 스팀 출시 도전기
Pooling 에서 문제
저는 현재 10.Object Pooling을 듣고 있는 학생입니다(초보)저는 현재 이와 같이 풀링이 제대로 작동하지 않고 있습니다. 분명 강의에서는 풀링이 제대로 작동하여 들어갔다가 나오는게 되지만 저는 코드에서 오류가 났는지 제대로 작동하질 않고 있어요ㅠㅠ. 제 코드 보시고 어떤 문제점이 있는지 알려주셨으면 합니다.(Projectile만 문제 있어요)using System.Collections; using UnityEngine; public class Player_Attacker : MonoBehaviour { public GameObject bulletPrefab; private void Start() { StartCoroutine(FireCoroutine()); } IEnumerator FireCoroutine() { yield return new WaitForSeconds(1.0f); FireProjectile(); StartCoroutine(FireCoroutine()); } void FireProjectile() { Vector3 fireDir; if (Player.instance.target != null) { fireDir = Player.instance.Direction(); } else { fireDir = transform.forward; } var bullet = MANAGER.POOL.Pooling_OBJ("Projectile").Get((value) => { Vector3 pos = transform.position + new Vector3(0, 1.0f, 0) + fireDir * 1.0f; value.transform.position = pos; value.GetComponent<Bullet>().Initalize(fireDir); }); } } 이 코드가 문제가 맞는지 확인해주셨으면 감사하겠습니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
순환참조 문제로 인해 발생하는 문제는 없을까요?
안녕하세요.강의 잘 듣고 있습니다. 강의를 듣다보니 Map <-> Hero(or Object) <-> Session 이 서로 참조를 하고 있는데요.이론 공부할 때는 순환참조의 객체 생성, 무한 호출 등의 문제로 인해 객체 간 순환참조를 금지한다고 학습했는데, 게임처럼 상호작용이 필요한 도메인은 순환참조 문제를 엔지니어 역량으로 막는걸까요? 자바-스프링 같은 프레임워크를 쓸 때는 객체 간 순환참조를 프레임워크단에서 체크해서 애플리케이션 실행 시점에 막더라구요.
-
해결됨[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
Nagle Algorithm
Is there a reason why its not switch off in socket? Isnt it a problem with mmo servers and we hold packets on our own?
-
해결됨[Unity6] 함께 만들어가는 서바이벌 게임 개발 - 스팀 출시 도전기
스킬쿨타임UI관련
SetSkillFrame함수에서 먼저 frame들을 다 삭제시키고 다시 생성하고있는데요 frame내에서 saveCooltime도 다 삭제가되니 레벨업을하고 다시 UI가 초기화될때 쿨타임도 아예 초기화가 되버리는 것같은데 제가 놓친부분이 있나요? 그리고 SetSkillFrame함수는 MANAGER.SESSION.onSelectedCard 델리게이트에 바인딩 시켜놓으면 되는건가요?
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
상속 구조에서의 awake흐름 및 init 함수 질문있습니다
강의 중에 사용하신 init 관련 코드에서 하나 궁금한 점이 있습니다.BaseController의 Awake() 안에서 _init = true를 먼저 설정한 다음 init()을 호출하게 되면, init() 안에서는 이미 _init == true 상태라서 실제 초기화 로직이 수행되지 않고 false만 반환하게 되는 것 같습니다.그런데 MonsterController에서는 base.init()이 true일 때 return 하도록 돼 있어서, 결과적으로 자식 클래스의 초기화 로직이 실행되지 않을 수도 있어 보인다는 생각이 들었습니다. 혹시 의도된 흐름이 맞는지, 아니면 _init = true 설정 위치나 분기 조건 쪽에 조정이 필요한 부분이 있는지 궁금합니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
CSV대신 DB
안녕하세요 강의 공부하다가 궁금증이 생겨서 질문합니다. 강의에서는 .csv를 사용해서 레벨 데이터를 저장하고 가져오는 방법을 사용하셨는데 서드파티 데이터베이스로 구현을 해놓고 넣었다 빼는 방식을 사용해도 괜찮을까요? 그러면 앱 업데이트를 할 필요없이 DB상의 값을 바꾸는 것만으로도 난이도를 조정할 수 있을 것 같아서요.현직에서는 어떻게 구현하는지 궁금해서 질문합니다.
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
돌진해서 몸박을하면 피격자를 날리면서 데미지를 입히는 스킬은 이 시스템에서 어떻게 만들 수 있을까요??
스킬 시전자를 Preceding Action에서 이동을 시키면서 몸박 콜라이더에 닿는 타겟에게 Effect를 Apply 시켜야할 것같은데.. 구조상으로는 Target에게 Effect를 적용시키는 InActionState와 Preceding Action State가 분리가 되어있어서 조금 생각하기 어려운것같습니다.
-
미해결[유니티 실전 프로젝트] Burger Please 모작
사운드를 어떻게 플레이 시켜야 하나요
각 상황에 맞는 사운드를 플레이하도록 구현하고 있는데요.Interaction 함수 안에서 사운드 출력 코드를 추가했는데 소리가 제대로 나오지 않고 계속 반복되서 출력되는 것처럼 치지지직 하다가 끝나버립니다. void OnMoneyInteraction(WorkerController wc) { if (!wc.Tray.IsPlayer || _moneyPile.ObjectCount == 0) return; _moneyPile.DeSpawnObjectWithJump(wc.transform.position, () => { GameManager.Instance.AddMoney(Define.MONEY_PER_BURGER); GameManager.Instance.AddExp(1f); SoundManager.Instance.PlaySFX("SFX_Money_Get"); }); }그래서 제대로 한번만 사운드가 출력되도록 하기 위해 bool형 예외처리를 해서 코드를 수정했더니 0.1초만에 소리가 났다가 사라집니다. audioSource 제대로 부착했고 loop 체크x, PlayOnAwake 체크 등 기본적인 것들은 다 제대로 세팅했습니다.어떻게 해야 제대로 된 소리를 출력할 수 있나요?public class SoundManager : Singleton<SoundManager> { [Header("BGM")] public AudioSource bgmSource; [Header("SFX")] public AudioSource sfxSource; [Header("SFX Clips")] public List<AudioClip> sfxClips; [Header("BGM Clips")] public List<AudioClip> bgmClips; public void PlaySFX(string clipName) { AudioClip clip = sfxClips.Find(c => c.name == clipName); if (clip != null) { sfxSource.volume = 1f; sfxSource.PlayOneShot(clip); } else { Debug.LogError($"SFX clip not found: {clipName}"); } }