Study/Project

VV 트러블 슈팅 1. MSB3073 에러, NewObject with empty name can't be used to create default subobjects 에러

에린_1 2024. 10. 24. 00:04
728x90

MSB3073 에러

  1. MSB3073에러가 발생해서 빌드가 안되는 문제를 겪었다.
  2. VS를 다시 켜보거나 Binaries를 삭제하고 리빌드 하는 과정을 거쳤지만 문제가 해결되지 않았다.
  3. 해결 방법
    1. Build.cs 파일 수정
      • FSocket 및 네트워킹 관련 기능을 사용하기 위해서는 프로젝트의 .Build.cs 파일에 필요한 모듈을 추가해야 했다.
    2. 프로젝트 폴더에서 .Build.cs 파일을 열어서 PublicDependencyModuleNames에 필요한 모듈을 추가해주었다.
      • 나는 Sockets 와 Networking 모듈이 필요했기에 추가해주었다.
    3. PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "Sockets", "Networking" });
    4. 성공적으로 빌드할 수 있었다.

NewObject with empty name can't be used to create default subobjects 에러

  1. NewObject 를 객체 생성할 때 발생하는 제한 사항과 관련된 문제였다. 언리얼 엔진에서 NewObject 를 사용하여 객체를 생성하는 경우, 특히 UObject 를 상속받은 클래스의 생성자 내부에서 사용할 때, 이름 충돌 문제나 기본 서브오브젝트 생성 규칙과 관련된 오류가 발생할 수 있었다.
  2. 해결 방법
    1. 생성자 외부에서 NewObject를 사용하는 방법을 사용했다.
    2. NewObject<> 는 생성자 외부에서 호출하면 문제가 발생하지 않기 때문에, 생성자 대신 다른 메서드에서 객체를 생성하는 방법을 사용했다.
    3. void UMyGameInstance::Init()
      {
      	Super::Init();
      	InitializeNetworkManager();
      	//Try Connect TO Server
      	NetworkManager->ConnectToServer("127.0.0.1", 7777);
      }
      
      void UMyGameInstance::InitializeNetworkManager()
      {
      	//Create NetworkManager Instance
      	NetworkManager = NewObject<UNetworkManager>(this, UNetworkManager::StaticClass());
      }
728x90

'Study > Project' 카테고리의 다른 글

VV 4. 클라이언트 수신  (0) 2024.10.29
VV 3. 로그인 기능  (0) 2024.10.29
VV 2. 서버와의 연결  (0) 2024.10.24
VV 1. 로그인 UI  (3) 2024.10.23
슬레이어즈_동기화 피드백  (0) 2024.06.18