我做了多人脚本和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!");
}
}
我试图删除覆盖,但现在方法不被调用时,本地播放器产卵。
2条答案
按热度按时间gojuced71#
我的猜测是你复制了内置类的名称,但没有得到你想要的结果,因为Unity不知道要使用哪个类。在你的代码片段中,你定义了一个名为PlayerController的类,但that's already the name of a different class和 that 类没有OnStartLocalPlayer方法。
虽然这不应该给你这个特殊的错误,但它让我对你的NetworkBehaviour类产生了疑问。它 * 也 * 是一个内置类,但它在UnityEngine.Networking命名空间中,而不是代码段中的
using
。同样,这应该给予你一个不同的错误,“它没有定义,你是否缺少一个汇编或using语句,“但你没有得到那个错误,这让我想到也许你在你的项目中有一个叫做NetworkBehaviour的脚本,它隐藏了内置的。试着用下面的代码替换你的类声明,看看它是否有什么不同:
这将明确地指向内置的NetworkBehaviour。如果这能为你修复它,那就太好了,但是真的不要给你的东西起和内置的东西一样的名字。
tuwxkamq2#
您正试图重写回调函数。您需要为回调注册一个函数。
请参阅:网络行为- OnStartLocalPlayer
以及
What is a CallBack?