묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
Rename 바를 여시는 단축키가 뭔가요
14:21초 처럼 강사님처럼 원하는 함수가 사용된 경로를 찾고싶은데 해당 기능을 사용하고자 하면 어떤 단축키를 사용해야할까요?
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
CSV 파일로부터 데이터 로딩 모듈
안녕하세요.소스에 JSON 파일로부터 데이터 로딩하는 부분은 있는데, CSV 파일로부터 데이터 로딩하는 부빈이 없습니다.CSV 파일로부터 데이터 로딩하는 것을 구현할려고 하는데, 혹시 힌트 같은 것이 있을까요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Input.anyKey == false 를 사용하는 이유? (KeyAction == null 은 안되나요?)
InputManager 에서 마우스든,키보드든 아무키나 눌렸는지 확인할때 Input.anyKey == false 를 사용하셨는데요.(KeyAction == null) 이렇게 사용해도 같은 의미인것 같아서 혼란스러운데요. (KeyAction == null) 이 내용으로 대체해도 상관 없나요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
보충 에셋 다운 관련
안녕하세요 보충 에셋관련 리소스들은 강의를 그전까지 다 들어야 다운이 가능한건가요? 미리 다운받으려 했는데 구름모양으로 된 다운버튼이 안보입니다..
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
OnClickEvent
안녕하세요UI_Popup을 상속받는 Popup 스크립트에서, [AntCompany]Init(){GetButton( .. ).gameObject.BindEvent(OnClickEvent1);} void OnClickEvent1() { } ===[Unity Part.3]Init(){GetButton( .. ).gameObject.BindEvent(OnClickEvent1);} void OnClickEvent1(PointerEventData data) { }=== Part.3에서는 PointerEventData를 왜 인자로 넘겨주는지 궁금해요!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
vs에서 디버깅이 제대로 이루어지지 않습니다.
이 상태로 디버깅을 진행하였습니다.컨트롤 F5를 눌러 디버깅을 하면 이렇게 나오고F5만 누른다면 콘솔창도 뜨지않고 바로 디버깅이 중료됩니다. 위에 있는 시작 버튼을 눌러도 똑같이 디버깅이 바로 종료됩니다. 왜 이런걸까요 ?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
열거형 질문 있어요.
강의영상 4분쯤에 20번째 줄 보겠습니다._tile = new TileType[size, size];이렇게 해서 tile 변수에 TileType[size,size] 인스턴스(?)를 만들고 넣어 줬는데요. 질문이 여러개 있습니다.애초에 TileType은 클래스가 아니라 열거형 형식이라 new TileType[size,size] << 이걸 인스턴스라 불러도 되나요? 아니면 뭐라고 불러야 할까요?(이것만 대답해 주셔도 될 것 같습니다^0^)/) TileType정의할때 TileType이 인덱스를 따로 가지고 있도록 정의하지 않았는데 어떻게 인덱스를 쥐고서 인스턴스를 만들 수 있나요?(해결..) 2번 질문을 곰곰히 생각해보고 검색도 좀 해보니까 string배열 만들듯이 값 타입이든 참조 타입이든 일단 데이터 타입이면 배열 선언이 모두 가능 하더군요. 그래서 열거형도 값 타입의 일종이니까 배열 선언이 가능하다 라는 걸 깨달았습니다. 혹시 다른 분들도 궁금하실 수 있으니 내용은 지우지 않고 남겨 두겠습니다. ^0^)
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
게임 최적화 관련해서 질문입니다.
안녕하세요. 올려주신 강의는 마지막까지 잘 들었습니다.강의 토대로 모작을 해보고 있는 중인데 올려주신 최종 코드로 게임을 돌려보면후반부에 프레임 드랍과 부하가 너무 심하더군요. 배치도 500 이상으로 올라가구요.아마도 몹수 보다는 경험치 보석 때문인거 같은데 어떻게 해결할 수 있을까요?보석은 중간 중간에는 자석으로 없앨 수 있지만 후반부에 몹들이 몰려와서 플레이어가 정지해 있으면서 보석이 쌓이는 구간에 들어서면 눈에 띄게 부하가 걸리는게 보입니다. 또한 모바일에서는 어느 정도 배치와 드로우콜을 목표로 개발해야 할지 알려주시면 좋겠습니다.
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
익명 함수의 인자값 op 의 출처는 어디인가요?
asyncOperation이 로드가 완료됐을때 complete안에 집어넣은 함수가 호출되는 구조는 이해했습니다.한가지 의문점은 op라는 값은 어디서 보내주는 값인지질문드립니다..
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
질문이 있습니다.
안녕하세요 저는 게임 서버에 관심이 있어서 혼자 독학하고 있는 대학생입니다. 다름이 아니라 Connector수업을 다 듣고 실행할라고 했는데 대상에 컴퓨터가 연결을 거부합니다. 이런 오류가 뜨는데 어떻게 해결 해야할지 모르겠습니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
GameRoom에서 세션 관리에 List를 사용한 이유가 궁금합니다.
Room에 Enter와 Leave를 통해 채팅에 참여하고 나갈 수 있습니다.그리고 해당 session들을 순회하면서 모든 세션에 메시지를 보내야 합니다. 여기서 의문 사항은 참여하는 것에는 List(ArrayList)는 O(1)인데, 나가는 작업이 발생하면 자칫 O(n)이 발생할 수도 있다고 생각했습니다.이유는 해당 session을 찾는데 linear하게 순회해서 찾아내야 하고, 해당 session을 제거하고나서 빈 공간을 앞으로 당겨줘야 하기 때문입니다. 이 때문에 제 생각엔 HashSet을 사용하는 것이 좋을 것이라 생각했습니다. 혹시 List를 사용한 이유가 Enter Leave 연산보다 Broadcast가 훨씬 많이 이용되고 있기 때문에순회가 HashSet보다 List가 훨씬 빠르기 때문인가요? 언제나 양질의 강의에 감사드립니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
Broadcast() 함수는 Push()로 캡슐화하지 않는 이유가 궁금합니다
public Player FindPlayer()는 리턴값 Player가 당장 필요해서 호출하는 함수니까 Push()를 안 하는 건 이해했습니다.근데 public void Broadcast()도 FindPlayer()와 같은 케이스라고 하셨습니다. 이게 무슨 뜻인지 이해가 안 갑니다.리턴값이 있는 것도 아니고 그냥 room.Push(room.Broadcast, packet) 처럼 Push로 고쳐도 상관없을 것 같은데 아닌가요?혹시 Broadcast()는 엄청 많이 호출되는 특수한 함수니까 성능상 이유 때문에 Push()를 생략하고 호출한다거나 그런 건가요?왜 FindPlayer()와 Broadcast()가 같은 케이스인지 궁금합니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
넓은 범위 충돌관련 질문드립니다.
만약 넓은 범위의 광역 공격을 구현하고자 한다면 cell단위로 N x N의 범위를 탐색하는 것과 Physics2D의 BoxCast를 사용해 탐색하는 것 중 어느 것이 성능적인 측면에 더 유리한지 궁금합니다.
-
해결됨[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
가상함수 오버라이드 시 함수호출순서
안녕하세요, BaseController의 Init() 함수 관련 질문드립니다. 예전 강의에 대한 질문이라 기억하실지 모르겠네요ㅠBaseController - CreatureController - MonsterController 상속관계가 있는 상황에서, BaseController 내 virtual Init() 가상함수를 만들고 Awake() 내부에 Init()을 호출하도록 코드를 작성하셨습니다.이때 CreatureController와 MonsterController 모두 Init()함수를 오버라이드한 상태입니다.이때 가상함수의 함수호출순서가 궁금해서 디버깅해봤는데, MonsterController 생성시 BaseController의 Awake()에 가장 먼저 진입하고, Init() 함수를 호출하는데, 이때 프로그램 다음 실행흐름이 BaseController내부에 virtual로 작성한 Init()함수가 아니라 MonsterController에 override한 Init()함수를 실행하는것이 이해가 안됩니다.BaseController내부 awake()에서 Init()을 호출하면 당연히 같은 클래스인 BaseController의 Init()을 호출하고 끝내야 할것으로 예상했는데, MonsterController의 Init()을 호출한다 게 잘 납득이 안됩니다.추가설명을 조금 해주실 수 있으실까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
VS Studio가 Unity에 연결되지 않습니다.
예전에는 잘 되던 Unity에 연결이 실패합니다.VS 버전 : VS Studio 2022유니티 버전 : 2021.3.5f1오류코드 : 대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다 + ip주소 제가 구글링 이후 시도한 방법으로는Edit > Preferences > External Tools > External Script Editor에서 VS Studio 2022가 맞는지 확인Regenerate project files로 .csproj 재생성방화벽이 허용하는 앱에서 VS 2022 허용 체크하기방화벽 끄고 연결시도하기유니티와 VS를 껐다 다시 켜기이렇게 시도해 보았지만 모두 효과가 없었습니다ㅠㅠ
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
GameObject에 작성한 PosInfo, Stat 프로퍼티에 궁금한 게 생겼습니다.
선생님께서 작성하신 GameObject.cs 코드에 이런 부분이 있었습니다. public ObjectInfo Info { get; set; } = new ObjectInfo(); public PositionInfo PosInfo { get; private set; } = new PositionInfo(); public StatInfo Stat { get; private set; } = new StatInfo(); public GameObject() { // 링크를 이어준다 Info.PosInfo = PosInfo; Info.StatInfo = Stat; } 근데 위 생성자에서 저 '링크'를 이어줬는데 그 후로Info.PosInfo = new PositionInfo();라는 코드를 부주의로 실행시킨다면 링크가 깨지지 않나요?그 후로는 PosInfo.PosX = 0;같은 걸 실행해도 PosInfo와 Info.PoInfo는 별개이니 게임오브젝트에 적용이 안 될 것 같은데이렇게 이해하고 있는데 이게 맞는지 궁금합니다.그리고 아래처럼 고친다면 이 링크 깨짐 문제가 해결되는지 궁금합니다. public ObjectInfo Info { get; set; } = new ObjectInfo() { // 이걸 안 하고 쓰면 크래시가 난다 PosInfo = new PositionInfo(), StatInfo = new StatInfo() }; public PositionInfo PosInfo { get { return Info.PosInfo; } set { Info.PosInfo = value; } } public StatInfo Stat { get { return Info.StatInfo; } set { Info.StatInfo = value; } }
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
nullpointexception 에러가 뜹니다.
2시간동안 이리저리 따라해서 계속 널포인트가 뜹니다.PlayerController클레스의 여기에서 널포인트가 뜹니다. Managers.Input.KeyAction += OnKeyboard; 에러내용은 아래이고NullReferenceException: Object reference not set to an instance of an objectManagers.get_Input () (at Assets/Script/Managers/Managers.cs:11)PlayerController.Start () (at Assets/Script/PlayerController.cs:12)
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
거리 계산
개발중 궁금한 것이 하나 생겼습니다. 주위에 있는 특정 오브젝트 (ex 적)들을 찾을 때는 어떤식으로 개발하는게 좋을까요 ? OverlapSpher를 활용하는 방법Vector3.Distance 또는 magnitude를 활용하는 방법그리고 이 둘 중 나중에 서버를 추가한다고 할 때 어느 방법이 더 유용한가요 ?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
foreach문 에러에 대해 궁금합니다
foreach문은 T형식을 사용할 수 없다는데요..T에 GetEnumerator의 공개 인스턴스 또는 확장 정의가 없기 때문이라는데 어떡하면 좋죠?;;
-
해결됨[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
장비의 옵션을 불러오는 부분에서 질문이 있습니다.
JSON 에서 데이터를 불러오고 장비 아이콘을 클릭 하였을때 장비의 아이콘과 옵션의 수치가 표시되는 부분이 궁금하여 뜯어보다가 질문이 생겼습니다.무기의 경우에는 HP보너스 스탯이 존재하지 않아도 JSON에서 0을 부여하고 추후에 UI_EquipmentinfoPopup에서 HP 스탯이 0인지 아닌지를 판별하여 장비의 아이콘과 옵션 수치를 표시하고 있는것을 확인 했어요.그런데 장비의 옵션 수치가 2개를 넘어서 더 여러가지가 되었을 경우에도 이런 방식으로 처리하는것이 효율적일까요? 아래 코드를 스위치문으로 변경하여 스탯에 맞는 아이콘과 옵션을 찾던가 JSON 구조 자체를 변경해야될것 같은데 어떤 방향으로 해야할지 잘 모르겠어서 선생님의 조언을 구합니다.