묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
영웅 랜덤 소환
안녕하세요 영웅 랜덤 소환에 대해서 궁금한 게 있어서 질문 드립니다사용하려는 히어로 에셋들이 다 프리팹으로 되어있고 스프라이트가 없어서 강의처럼 애니메이션을 갈아끼우는 방식이 적용되지 않습니다. 그래서 Hero_Database 스크립터블 오브젝트에 프리팹들을 저장하고 HeroSpawn함수 호출 시 database에 가져와서 생성하는 방식을 이용했습니다var data = Hero_Database.GetHero_Random();var go = Instantiate(data);이런 식으로 하면 사용하려는 모든 프리팹에 NetworkObject 컴포넌트를 달아야하는데 이 부분에 문제가 있을까요??..... 아니면 더 좋은 방법이 있을까요??
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
게임출시 관련
안녕하세요. 저는 이 게임을 조금만 변형하여 출시해 보고 싶은데요. 만약 이 게임을 출시한다면 제가 바꿔야 하는 것들이 어떤 것일까요? 제가 생각해보자면 각종 캐릭터 및 이미지 자료정도로 생각이 되는데요. 게임에 스토리와 흐름을 조금만 변형해서 가져가도 되는 것인지 궁금합니다.
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
캐릭터 판매 38분 질문
CheckGetPosition과 같은 경우에는 ServerRpc에서 해도 되는 부분 같은데요. 이것은 ServerRpc에서 할지 clientRpc에서 할 지 당사자가 결정하면 되는 부분일까요?
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
강사님. 감사합니다.
혹시나 3D방치형 게임은 혹시 할인 프로모션이 계획돼 있을까요? 항상 결제하면 할인이 되는 경우가 많았어서요.
-
해결됨C++을 이용한 자체 엔진 제작(유니티 엔진 클론코딩)
Gdiplus 이미지 띄울 시 급격한 프레임 저하
안녕하세요 얌얌님.Gdiplus로 Ocean 이미지를 띄우면 급격하게 프레임이 떨어지는 문제가 있어서 문의드리게 되었습니다.이미지를 띄우지 않았을 땐 2~3000프레임까지 나왔었는데, Scene에서 Gdiplus::Image로 Ocean 이미지를 띄우면 100프레임으로 뚝 떨어지고,Layer 계층을 추가해서 Image를 띄우면 4~5프레임까지 떨어져서 정상적인 조작이 불가능해집니다.https://github.com/9kyo-hwang/Unity-Clone 강의 영상 보고 따라한 코드를 깃헙에 올려놓았는데, 혹시 확인 한 번 해주시면 감사하겠습니다...
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
캐릭터 이동1 24분부터 잘 안되요.
캐릭터 이동1편에서 24분전에 holder자체를 교환할 때는 됐는데요. holder안의 캐릭터 이동으로 변경시 캐릭터들이 자꾸 가운데사 만나는 게 됩니다. 그리고 강의에 parentholder에 대해서는 언급이 없었는데 무엇일까요?
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
함수에 대한 질문
제가 확실히 이해한 것이 맞는지 체크하고 싶어 질문 드려요. NetworkObject는 생성시 Instantiate함수만으로도 양쪽에 동기화 되어 생성된다. (생성만 되는 것인지 이동시 위치까지 동기화 되는건이지 궁금합니다.) ServerRpc함수 : 이 함수는 client의 작업은 client에서 하는 것이 아니라 host가 대리처리해 주어야 하기 때문에 client만 주로 호출할 일이 많다. ClientRpc함수 : host가 작동시킨 것들을 clinet에게 전달하거나 ServerRpc함수에 작업한 것을 다시 양쪽에 동기화해서 전송해주는 역할을 한다. 이 함수는 host와 client컴퓨터 양쪽에서 모두 실행된다. 위에 두 함
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
클라이언트 에러 및 버그들
안녕하세요! 강의를 보며 멀티플레이 게임 제작을 공부 중인 학생입니다.현재까지 나온 강의를 모두 듣고 클론 코딩을 하였는데 종종 클라이언트에서 에러가 발생합니다.깃허브 코드와 강의를 다시 봐도 해결이 힘들어 질문을 작성하게 되었습니다. client 화면에서 hero 들이 모두 화면 중앙에 배치되는 현상host는 문제 없이 host와 client영역으로 나뉘어져 있습니다.이 경우client에서 host보다 먼저 herospawn을 하면 null에러가 뜹니다.NullReferenceException: Object reference not set to an instance of an objectSpawner.HeroSpawn (System.UInt64 clientId, System.String rarity)Spawner 스크립트의 HeroSpawn(ulong clientId, string rarity) 함수의 var existingHolder = GetExistingHolder(temp, data.Name); 이 부분이 문제라고 뜹니다.host에서 herospawn을 먼저 하고 client에서 herospawn을 하면 null 에러 없이 랜덤하게 두 가지 경우가 나옵니다..위 사진처럼 client 화면의 중앙에 모든 hero가 배치되는 경우host, client모두 정상적으로 배치되는 경우그러나 위 두 가지 경우 모두 client는 host가 마지막으로 생성한 영웅만 생성됩니다.ex) host가 warrior 소환 시 client는 warrior 만 소환, host가 summon 버튼을 눌러 archer 소환 시, client는 그 후로 archer만 소환client 에서 영웅 클릭 시, NullReferenceException 발생CameraRay 스크립트의MouseButtonDown() 함수의 else if (value == 1) Canget = holder.Holder_Part_Name.Contains("CLIENT"); 부분에서 발생합니다. 위 두 문제의 해결법을 알고 싶습니다 ㅠㅠ게임을 실행하며 찾은 버그들 입니다.내 진영에서 상대 진영으로 hero 이동 가능hero 없는 빈 홀더 클릭 및 이동 가능 (ui도 뜸)빈 홀더 클릭 후, sell 버튼 클릭 시 Sell() 함수 내의 UI_Main.instance.GetNavigation 부분 인덱스 범위 에러 발생몬스터 클릭 시 CameraRay 스크립트 MouseButtonDown()가 호출되어 heroholder가 null이 되어 에러 발생 버그들은 각 관련된 처리를 하지 않아 발생한 것 같지만, 위의 클라이언트 문제는 해결법을 모르겠습니다
-
미해결C++을 이용한 자체 엔진 제작(유니티 엔진 클론코딩)
강좌완결
win api 게임만들기 강좌를 찾다가 여기까지 왔는데 이강좌가 이과정에서 끝인가요? 이이상 업데이트 안되는거 같아서 질문드립니다.
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
multiplay부분 에러
Library\PackageCache\com.unity.multiplayer.tools\NetVis\Configuration\OwnershipSettings.cs(41,24): error CS0103: The name 'CustomColorSettings' does not exist in the current contextmultiplay 열심히 보고 있는데요. 시작부터 이런 에러가 나와서 앞으로 나가지를 못 하고 있네요.
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
Summon 소환
안녕하세요 선생님 잘 다녀오셨나요 ? ?? 😃 만들던 게임 날라가서 복습 한다 생각하고처음부터 다시 하고 있습니다 ......캐릭터 소환이 안됩니다시뮬레이터에서 소환버튼이 잘 눌려서 소환가능한데game 창에서는 소환버튼 클릭이 안됩니다 canvas 설정이나 그런게 필요한가요 ... 시뮬에서는 잘 소환되는데 game창에서는 소환이 안됩니다 이유를 모르겠습니다;;
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
유니티6로 배우는 실전 멀티플레이 디펜스의 [로비생성] 편에 질문있습니다.
이전까진 문제없이 잘 이해하고 코드도 실행되었습니다. 그런데 [로비생성] 강의를 보고 따라했더니 오류가 발생했습니다. Unity.Services.Lobbies.LobbyServiceException: lobby code 'BARB6QOAUYDBBMLVUPZQBE' contains an invalid character 'O' (U+004F) at index 6 ---> Unity.Services.Lobbies.Http.HttpException`1[Unity.Services.Lobbies.Models.ErrorStatus]: (400) HTTP/1.1 400 Bad Request...생략...... 호스트는 잘 만들어지는데요, 다른 플레이어로 조인하려고 하면 저런 빨강 글씨의 오류가 발생합니다.인터넷에 찾아보니 외국 포럼만 나오는데요, 버그같기도 하고 그러네요. 제가 고치기 힘들어서요. 혹시 중간강의에서 코드를 통째로 올려주실 수 있나요? 저 오류때문에 코드를 실행하진 못하고, 코드 따라치면서 논리만 이해하는 식으로 공부하고 있습니다.코드를 실행하면서 게임을 돌려보는 실습까지 해보면 재밌긴 하겠지만요. 강의는 재밌게 잘 보고 있는데, 저 오류가 아쉽네요.
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
섹션4-로비생성 작업 중(32:26)중 첫 실행시 [Vivox]: System.ArgumentException: 'server' is null or empty 오류 발생합니다.
섹션4-로비생성 작업 중(32:26)중 첫 실행시 다음과 같은 오류가 발생합니다.[Vivox]: System.ArgumentException: 'server' is null or emptyParameter name: serverUnityEngine.Logger:Log (UnityEngine.LogType,string,object)Unity.Services.Vivox.VivoxLogger:LogException (System.Exception) (at ./Library/PackageCache/com.unity.services.vivox/Runtime/SDK/Utils/VivoxLogger.cs:16)Unity.Services.Vivox.VivoxServiceInternal:.ctor (string,string,string,string,bool,bool,Unity.Services.Authentication.Internal.IAccessToken,Unity.Services.Authentication.Internal.IPlayerId,Unity.Services.Authentication.Internal.IEnvironmentId) (at ./Library/PackageCache/com.unity.services.vivox/Runtime/VivoxServiceInternal.cs:140)Unity.Services.Vivox.VivoxPackageInitializer:Initialize (Unity.Services.Core.Internal.CoreRegistry) (at ./Library/PackageCache/com.unity.services.vivox/Runtime/VivoxPackageInitializer.cs:41)Unity.Services.Core.Internal.CoreRegistryInitializer/<>c__DisplayClass3_0/<<InitializeRegistryAsync>g__InitializePackageAsync|2>d:MoveNext () (at ./Library/PackageCache/com.unity.services.core/Runtime/Core.Internal/Registry/CoreRegistryInitializer.cs:91)System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start<Unity.Services.Core.Internal.CoreRegistryInitializer/<>c__DisplayClass3_0/<<InitializeRegistryAsync>g__InitializePackageAsync|2>d> (Unity.Services.Core.Internal.CoreRegistryInitializer/<>c__DisplayClass3_0/<<InitializeRegistryAsync>g__InitializePackageAsync|2>d&)Unity.Services.Core.Internal.CoreRegistryInitializer/<>c__DisplayClass3_0:<InitializeRegistryAsync>g__InitializePackageAsync|2 (Unity.Services.Core.Internal.IInitializablePackage)Unity.Services.Core.Internal.CoreRegistryInitializer/<>c__DisplayClass3_0/<<InitializeRegistryAsync>g__TryInitializePackageAsync|0>d:MoveNext () (at ./Library/PackageCache/com.unity.services.core/Runtime/Core.Internal/Registry/CoreRegistryInitializer.cs:63)System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start<Unity.Services.Core.Internal.CoreRegistryInitializer/<>c__DisplayClass3_0/<<InitializeRegistryAsync>g__TryInitializePackageAsync|0>d> (Unity.Services.Core.Internal.CoreRegistryInitializer/<>c__DisplayClass3_0/<<InitializeRegistryAsync>g__TryInitializePackageAsync|0>d&)Unity.Services.Core.Internal.CoreRegistryInitializer/<>c__DisplayClass3_0:<InitializeRegistryAsync>g__TryInitializePackageAsync|0 (Unity.Services.Core.Internal.IInitializablePackage)Unity.Services.Core.Internal.CoreRegistryInitializer/<InitializeRegistryAsync>d__3:MoveNext () (at ./Library/PackageCache/com.unity.services.core/Runtime/Core.Internal/Registry/CoreRegistryInitializer.cs:48)System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1<System.Collections.Generic.List`1<Unity.Services.Core.Internal.PackageInitializationInfo>>:Start<Unity.Services.Core.Internal.CoreRegistryInitializer/<InitializeRegistryAsync>d__3> (Unity.Services.Core.Internal.CoreRegistryInitializer/<InitializeRegistryAsync>d__3&)Unity.Services.Core.Internal.CoreRegistryInitializer:InitializeRegistryAsync ()Unity.Services.Core.Internal.UnityServicesInternal/<>c__DisplayClass32_0/<<InitializeServicesAsync>g__InitializePackagesAsync|1>d:MoveNext () (at ./Library/PackageCache/com.unity.services.core/Runtime/Core.Internal/UnityServicesInternal.cs:170)System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start<Unity.Services.Core.Internal.UnityServicesInternal/<>c__DisplayClass32_0/<<InitializeServicesAsync>g__InitializePackagesAsync|1>d> (Unity.Services.Core.Internal.UnityServicesInternal/<>c__DisplayClass32_0/<<InitializeServicesAsync>g__InitializePackagesAsync|1>d&)Unity.Services.Core.Internal.UnityServicesInternal/<>c__DisplayClass32_0:<InitializeServicesAsync>g__InitializePackagesAsync|1 ()Unity.Services.Core.Internal.UnityServicesInternal/<InitializeServicesAsync>d__32:MoveNext () (at ./Library/PackageCache/com.unity.services.core/Runtime/Core.Internal/UnityServicesInternal.cs:151)System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start<Unity.Services.Core.Internal.UnityServicesInternal/<InitializeServicesAsync>d__32> (Unity.Services.Core.Internal.UnityServicesInternal/<InitializeServicesAsync>d__32&)Unity.Services.Core.Internal.UnityServicesInternal:InitializeServicesAsync ()Unity.Services.Core.Internal.UnityServicesInternal/<InitializeAsync>d__27:MoveNext () (at ./Library/PackageCache/com.unity.services.core/Runtime/Core.Internal/UnityServicesInternal.cs:80)System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start<Unity.Services.Core.Internal.UnityServicesInternal/<InitializeAsync>d__27> (Unity.Services.Core.Internal.UnityServicesInternal/<InitializeAsync>d__27&)Unity.Services.Core.Internal.UnityServicesInternal:InitializeAsync (Unity.Services.Core.InitializationOptions)Unity.Services.Core.UnityServices/<InitializeAsync>d__21:MoveNext () (at ./Library/PackageCache/com.unity.services.core/Runtime/Core/UnityServices.cs:128)System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start<Unity.Services.Core.UnityServices/<InitializeAsync>d__21> (Unity.Services.Core.UnityServices/<InitializeAsync>d__21&)Unity.Services.Core.UnityServices:InitializeAsync (Unity.Services.Core.InitializationOptions)Unity.Services.Core.UnityServices:InitializeAsync () (at ./Library/PackageCache/com.unity.services.core/Runtime/Core/UnityServices.cs:79)NetManager/<Start>d__2:MoveNext () (at Assets/00_Scripts/Network/NetManager.cs:22)System.Runtime.CompilerServices.AsyncVoidMethodBuilder:Start<NetManager/<Start>d__2> (NetManager/<Start>d__2&)NetManager:Start () at Assets/00_Scripts/Network/NetManager.cs:22 여기 부분 코드가 await UnityServices.InitializeAsync(); 인데 어떻게 디버깅 해야 할 지를 모르겠습니다.
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
씬의 기즈모 조절
섹션3. 캐릭터 공격 시작부분에서 씬 화면에 있는 이런 기즈모들은 어디서 조절 가능한가요?
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
애니메이션
안녕하세요 애니메이션 작업 하실때 시간 나누어 주는거 기준이 있나요 ?? 한개당 5초씩 잡아 주는게 좋은가요 ?
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
Animator오류
안녕하세요 똑같이 다 수정했는데 공격 애니가 실하지않고 사진처럼 저 오류 가나옵니다 뭐가 잘못되고있는건가요 선생님
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
네트워크 오브젝트 설정
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요 안녕하세요 선생님 Hero에게 network Object 넣었을때 hash값이 저는 0이고 선생님은 다르네요 그래서 Default network Prefabs 에 자동으로 추가되지않아서플러스 버튼 눌러서 추가하면 정상 작동되긴하나 선생님이랑 방법이 틀려서 찝찝합니다 뭐를 실수하고있는건가요
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
NetworkVariable<>, ClientNetworkTransform 사용 질문
강의를 보던 중 궁금한 점이 생겼습니다. 몬스터의 체력변경을 수동으로 ServerRpc,ClientRpc를 사용했는데, NetworkVariable<>을 사용하지 않으신 이유가 있으실까요? NetworkVariable<int> 같은 형식으로 해당 변수를 선언하면 그 변수가 알아서 다른 클라이언트에게 전파되어 동기화 된다고 배웠습니다. ugs 패키지를 임포트하고나면 오브젝트에 ClientNetworkTransform 컴포넌트를 부착할 수 있더라구요. 이걸 추가하면 그 오브젝트의 TRS(이동,회전,크기) 모두 자동으로 동기화를 해주는 듯 하던데 이것을 사용하지 않으신 이유가 있으실까요? 처음 배우는 입장에서 동기화를 신경쓰기가 제일 까다로운 부분인데 이 컴포넌트를 사용하면 적어도 트랜스폼에 한정해서는 동기화에서 도움을 받을 수 있는 것처럼 보입니다.
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
소환 위치
안녕하세요 선생님 혹시 나중에 한 자리에같은 속성끼리 3마리 씩 소환예정인가요??아니면 한자리에 한마리만 스폰가능하나요