所以我正在开发一个带有一些.cs文件的项目,我不想修改它,因为它正由其他人更新。
所以我继承了这个课程。在基类中是标题:
public partial class BasePlayer : MonoBehaviour {
[Header("Stats")]
[SyncVar] public int stat1 = 0;
[SyncVar] public int stat2 = 0;
}
在我的课程中,我希望能够将另一个var添加到同一个标题中。我该怎么做呢?
public partial class MyPlayer : BasePlayer {
[SyncVar] public int stat3 = 0;
}
而且我知道这样做并不是很实际,但我真的无法触及基类。
答案 0 :(得分:1)
答案较晚,但可能会帮助他人。而不是使用 Header 属性;您可以使用可序列化数据类对统计信息进行分组。例如:
[Serializable]
public class GroupOneData
{
public int stat1;
public int stat2;
}
[Serializable]
public class GroupTwoData
{
public int stat3;
public int stat4;
}
public abstract class BaseClass<T, U> : MonoBehaviour
where T : GroupOneData where U : GroupTwoData
{
public T stats1;
public U stats2;
}
[Serializable]
public class DerivedOneData : GroupOneData
{
public int stat3;
}
[Serializable]
public class DerivedTwoData : GroupTwoData
{
public string text = "yeeyy";
public float stat3;
}
public class DerviedClass : BaseClass<DerivedOneData, DerivedTwoData>
{
// You will see all stats in inspector as foldout
}
一些现实生活中的例子是( GalleryVideoContent 和 GalleryImageContent 都源自与上述BaseClass类似的 GalleryContent 类):
答案 1 :(得分:0)
你需要将属性放在你的类中,就像这样,
public partial class MyPlayer : BasePlayer {
[Header("Stats")]
[SyncVar] public int stat3 = 0;
}
所以我正在开发一个项目,其中包含一些我不想要的.cs文件 修改,因为它正由其他人更新。
您的基类是Partial,您可以尝试以下代码。
public partial class BasePlayer : MonoBehaviour {
[SyncVar] public int stat3 = 0;
}
编译器应将它们组合成一个类。
这是输出:
答案 2 :(得分:0)
我举了一个例子:
public class BasePlayer : MonoBehaviour {
[Header("Stats")]
public int stat1 = 0;
public int stat2 = 0;
}
public class MyPlayer : BasePlayer {
public int stat3 = 0;
public string duck = "quak";
[Header("Stats2")]
public string cow = "mooooo";
}
希望能帮到你!据我所知,这就是你想要的。如果没有随意给我们提供更多信息,比如UnityEditor屏幕,你想要看到什么。
PS:当使用[SyncVar]时,你的基础游戏应该继承自NetworkBehaviour,对吗?