使用 UNET NetworkBehaviour 的继承问题

Inheritance issue using UNET NetworkBehaviour

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

根据文档http://docs.unity3d.com/Manual/UNetStateSync.html class 应该继承自 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# 程序员。 class 继承自另一个 class 而继承自 NetworkBehaviour 的事实不支持我这样做吗?

仅供参考,在 MovingEntity 上添加 [SyncVar](直接继承自 NetworkBehaviour)效果很好。

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

提前致谢,抱歉英语不好。

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

using UnityEngine.Networking;

这与继承无关。每个 c# 文件都需要明确说明它正在使用的名称空间。或者,您可以使用 fully qualified names:

[UnityEngine.Networking.SyncVar]

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

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

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

的 class 的包