Removing a property / field from ScriptableObject class
So I'm doing some refactoring on my Unity game that uses a ScriptableObject to contain a weapon definition. I'm wanting to remove one of the public properties in the weapon definition as it is no longer needed. Here's my class in full, I'm wanting to get rid of 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;
}
However, when I try to remove the property from the ScriptableObject, Unity gives me the following error:
Assets/Scripts/Actors/ActorWeapon.cs(64,53): error CS1061: Type 'WeaponDefinition' does not contain a definition for 'shotParticlesPrefab' and no extension method 'shotParticlesPrefab' of type `WeaponDefinition' could be found. Are you missing an assembly reference?
I tried restarting Unity and Visual Studio, but after the restart none of my scripts on any of my prefabs would load because of the error. I also tried cleaning up references in the existing weapon definitions (basically setting shotParticlesPrefab to None) but had no joy there either. After restoring the property, all returned to normal without issues but leaves me with a property I don't need anymore.
What's the proper way to go about this? Is it possible to remove a property on a ScriptableObject after instances of it have been created in a project? Do I have to delete all existing instances of the ScriptableObject before changes are possible? That would be a rather ugly solution, so I haven't tried that yet. :|
My best Google-Fu attempts didn't yield any results on something like this issue, so here I am. :) Any thoughts would be greatly appreciated. Thanks.
Answer by ricke44654 · Jan 06, 2017 at 03:37 AM
Nevermind, this was a miss on my part. I forgot to remove a reference to the shotParticlesPrefab in my ActorWeapon script, DOH! The error told me where to go, I just have to read it... :(
Your answer
Follow this Question
Related Questions
How do I make a Status Effect system in a turn based combat RPG ? 0 Answers
Does loading a ScriptableObject on runtime and modifying it affect the ScriptableObject in file? 1 Answer
Having Trouble Disabling Script Components. 1 Answer
ScriptableObject not saving to Asset properly 0 Answers
Attaching method to scriptableobject 1 Answer