1

在 Unity3d 5 中使用 UNET 的状态同步支持让我头疼。

根据文档http://docs.unity3d.com/Manual/UNetStateSync.html 该类应继承自 NetworkBehaviour。好吧,我正在这样做:

class Player : Character
abstract class Character : MovingEntity
abstract class MovingEntity : NetworkBehaviour

在哪里,Character我使用[SyncVar]自定义属性存储所有玩家数据。像这样:

public abstract class Character : MovingEntity
{
    [SyncVar]
    public string name;
}

但在检查员中,我收到以下错误:

The type or namespace name `SyncVar' could not be found. Are you missing a using directive or an assembly reference?

The type or namespace name `SyncVarAttribute' could not be found. Are you missing a using directive or an assembly reference?

不是 C# 的经验丰富的程序员。类从另一个继承自的类继承的NetworkBehaviour事实不支持我这样做吗?

仅供参考,添加[SyncVar]MovingEntity直接继承自NetworkBehaviour)工作得很好。

我做错了什么?在这个例子中我没有在类继承中有什么好的做法吗?

在此先感谢,并为糟糕的英语感到抱歉。

4

2 回答 2

2

您可能忘记在您的文件之一中添加 using 指令:

using UnityEngine.Networking;

这与继承无关。每个 c# 文件都需要显式声明它正在使用的命名空间。或者,您可以使用完全限定名称

[UnityEngine.Networking.SyncVar]
于 2015-06-16T15:27:43.603 回答
0

这不是问题中主要问题的答案,只是为了帮助像我一样来自谷歌而最终来到这里的人 - 请不要删除这个答案,如果它在我需要的时候它会帮助我

如果你们因为 UNet 已被弃用而进入此页面并且收到 NetworkBehaviour 的参考错误,请安装包:Multiplayer HLAPI

似乎已经解决了我正在使用的一个包中的依赖问题。我没有多人游戏功能,所以我不知道它是否有效。但至少我仍然可以使用具有从 NetworkBehaviour 继承的类的包。

于 2020-06-06T22:19:52.063 回答