使用 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 的包
在 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 的包