- Home /
Can't assign a component?
Hello, I've overloaded some operators in a class and want to assign a component to a "new" one. Here is the code:
GetComponent<Stats>() = finalStats / (generation - 1);
The error I get is: The left-hand side of an assignment must be a variable, a property or an indexer.
Of course C# doesn't let you overload the = operator (sigh). Am I allowed to assign a Component like this? If so, then the problem is probably in my overloaded operator.
edit: This doesn't work either, so it seems the problem is not my operator.
Stats test = new Stats();
GetComponent<Stats>() = test;
What exactly do you mean by "want to assign a component to a "new" one" ? Do you mean you want the component to be completely reset?
Yes. Basically I create a new component and want to reassign the existing one. The divide operator returns a new Stats component.
Answer by Kiwasi · Aug 16, 2014 at 04:05 AM
Use
Destroy(GetComponent<Stats>());
AddComponent<Stats>();
Components can't exist without being attached to a GameObject.
You also can't create a Component with the new keyword
This would be a workaround so I marked it as the answer. But really I just have to figure something else out :)
I don't think what you are trying to do is possible without a lot of custom coding. Unity definitely doesn't support components existing without a GameObject. Even in the editor you can't just pick up an old component and move it to a new GameObject.
You could consider doing something with a factory pattern.
Answer by Eric5h5 · Aug 16, 2014 at 02:37 AM
You would use AddComponent to add a new component to a GameObject. GetComponent only returns an existing component. You can't assign anything with GetComponent, and components are not created with the new operator.
Well I've added a constructor that inits the component now. I have side-stepped the problem by adding a replaceStats(Stats newStats) method. What do you think? Good alternative?
Your answer
Follow this Question
Related Questions
Overload Operator in UnityScript? 0 Answers
How can I overload operators in Unity Javascript 1 Answer
Mass assign shaders? 1 Answer
Assign Texture2D at runtime 2 Answers
How can I make my for loop "reset" if my array contains an value? 5 Answers