Unity3d ScriptableObject,添加字段,资产不更新,如何更新?

Unity3d ScriptableObject,添加字段,资产不更新,如何更新?,unity3d,serialization,scriptable-object,Unity3d,Serialization,Scriptable Object,ScriptableObject类中新添加的字段未放入其类型的资产中。这是可编写脚本的对象的工作方式吗?有没有一种方法可以在不丢失已填充字段中的现有信息的情况下更新可编写脚本的对象资产 我的ScriptableObject类有一系列用于动画的字符串: public class SO_AnimStringNames : ScriptableObject { public string FirstAnim; public string SecondAnim; public string ThirdA

ScriptableObject类中新添加的字段未放入其类型的资产中。这是可编写脚本的对象的工作方式吗?有没有一种方法可以在不丢失已填充字段中的现有信息的情况下更新可编写脚本的对象资产

我的ScriptableObject类有一系列用于动画的字符串:

public class SO_AnimStringNames : ScriptableObject {
public string FirstAnim;
public string SecondAnim;
public string ThirdAnim;
}
我通过这个类创建了一个ScriptableObject资产,并将名称添加到字符串中,并将其用作使用这些字符串的另一个对象类型中的数据

刚才,在ScriptableObject类中添加了第四个字符串,现在看起来是这样的:

public class SO_AnimStringNames : ScriptableObject {
public string FirstAnim;
public string SecondAnim;
public string ThirdAnim;
public string FourthAnim; // newly added field
}
但是它在ScriptableObject资产中不可见/更新,并且没有明显的方法来更新此资产


这是对ScriptableObjects的限制,还是出了什么问题?

我对您的问题有些困惑,所以

选项1: 我刚刚尝试了您所做的,但我在您的类的顶部添加了
CreateAssetMenu
属性,有人提到您可能没有共享所有代码,但理论上应该是这样的:

[CreateAssetMenu(fileName=“NewAnimStringNames”,menuName=“Animation Names”)]
公共类SO_AnimStringNames:ScriptableObject
{
//先拿这三个做个例子
公共字符串第一动画;
公共字符串SecondAnim;
公共字符串ThirdAnim;
//然后添加第四个变量,我之前创建的实例将正确更新
//并保留我在其他三个上设置的值
公共字符串FourthAnim;
}
这就是您的
ScriptableObject
的实际外观吗?您是从“资产/创建”菜单还是右键单击“资产+创建”菜单来创建它们的

选项2:
他们还提到,可能您还有另一个问题,即不允许Unity重新编译,导致您的
ScriptableObject
使用新字段更新自身?请检查控制台是否存在任何其他问题。

应该发生。。。有任何编译器错误会妨碍Unity重新编译吗?您是如何创建资产的?(我想这不是完整的代码?)这就是问题所在!我在另一个文件中添加了一些东西,一个新的抽象方法,并没有级联所有需要的重写。错过了两个,没有再想它了,惠斯特做了其他的事情。谢谢你,@derHugo,感觉自己是一个正确的木偶。选择2就是!