unity3d OnStartLocalPlayer()未重写

uemypmqf  于 2022-12-27  发布在  其他
关注(0)|答案(2)|浏览(159)

我做了多人脚本和OnStartLocalPlayer方法无法覆盖的一些原因。错误:
第一个月
脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Netcode;
using UnityEngine.Audio;
using TMPro;

public class PlayerController : NetworkBehaviour
{
    public override void OnStartLocalPlayer() {
        Debug.Log("Local Player started!");
    }
}

我试图删除覆盖,但现在方法不被调用时,本地播放器产卵。

gojuced7

gojuced71#

我的猜测是你复制了内置类的名称,但没有得到你想要的结果,因为Unity不知道要使用哪个类。在你的代码片段中,你定义了一个名为PlayerController的类,但that's already the name of a different classthat 类没有OnStartLocalPlayer方法。
虽然这不应该给你这个特殊的错误,但它让我对你的NetworkBehaviour类产生了疑问。它 * 也 * 是一个内置类,但它在UnityEngine.Networking命名空间中,而不是代码段中的using。同样,这应该给予你一个不同的错误,“它没有定义,你是否缺少一个汇编或using语句,“但你没有得到那个错误,这让我想到也许你在你的项目中有一个叫做NetworkBehaviour的脚本,它隐藏了内置的。
试着用下面的代码替换你的类声明,看看它是否有什么不同:

public class PlayerController : UnityEngine.Networking.NetworkBehaviour
{

这将明确地指向内置的NetworkBehaviour。如果这能为你修复它,那就太好了,但是真的不要给你的东西起和内置的东西一样的名字。

tuwxkamq

tuwxkamq2#

您正试图重写回调函数。您需要为回调注册一个函数。
请参阅:网络行为- OnStartLocalPlayer
以及
What is a CallBack?

相关问题