使用UNET NetworkBehaviour的继承问题

问题描述 投票:1回答:2

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

根据文档 http:/docs.unity3d.comManualUNetStateSync.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)就能正常工作。

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

先谢谢你,抱歉我的英语不好。

c# inheritance unity3d unity-networking
2个回答
2
投票

你可能忘了在文件中添加using指令。

using UnityEngine.Networking;

这与继承无关。每一个c#文件都需要明确说明它使用的命名空间。或者,你可以使用 全称:

[UnityEngine.Networking.SyncVar]

0
投票

这不是问题中主要问题的答案,只是为了帮助谁在这里结束,由于像我一样从google来--请不要删除这个答案,它会帮助我,如果它在这里,当我需要它时

如果你们因为UNet已经被废弃,并且NetworkBehaviour出现了引用错误而来到这个页面,请安装包。多人游戏HLAPI

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

© www.soinside.com 2019 - 2024. All rights reserved.