从ScriptableObject类中删除属性/字段

时间:2017-01-06 02:22:59

标签: c# unity3d

我也把它发布到了Unity Answers,但没有得到任何点击,所以我想我也会在这里试试。

所以我在我的Unity游戏上做了一些重构,它使用ScriptableObject来包含武器定义。我想删除武器定义中的一个公共属性,因为它不再需要。这是我的全班,我想摆脱 shotParticlesPrefab

public class WeaponDefinition : ScriptableObject
{
    public const int DefaultWeaponDamage = 50;
    public const float DefaultWeaponFireRate = 0.25f;
    public const float DefaultWeaponShotSpeed = 600;

    public ActorWeaponShot shotPrefab;

    public ParticleSystem shotParticlesPrefab;

    public AudioClip shotAudio;

    public int damage = DefaultWeaponDamage;

    public float fireRate = DefaultWeaponFireRate;

    public float shotSpeed = DefaultWeaponShotSpeed;
}

但是,当我尝试从ScriptableObject中删除该属性时,Unity会给我以下错误:

Assets / Scripts / Actors / ActorWeapon.cs(64,53):错误CS1061:类型'WeaponDefinition'不包含'shotParticlesPrefab'的定义,并且没有'WeaponDefinition'类型的扩展方法'shotParticlesPrefab'可以被发现。您是否缺少装配参考?

我尝试重新启动Unity和Visual Studio,但在重新启动后,我的任何预制件上的脚本都不会因为错误而加​​载。我也尝试清理现有武器定义中的参考文献(基本上将shotParticlesPrefab设置为None),但也没有任何喜悦。恢复属性后,所有恢复正常没有问题,但留给我一个我不再需要的属性。

正确的方法是什么?是否可以在项目中创建实例后删除ScriptableObject上的属性?在更改之前,是否必须删除ScriptableObject的所有现有实例?那将是一个相当丑陋的解决方案,所以我还没有尝试过。 :|

我最好的Google-Fu尝试没有在这个问题上产生任何结果,所以我在这里。 :)任何想法将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

ActorWeapon试图使用现在不存在的属性,打开ActorWeapon并删除引用。