- Home /
UnityScript struct causes unity to crash
I'm creating a spatial tree and implementing the tree node using unityscript struct as follows:
class TNode extends System.ValueType { var parent : TNode; var depth : int; ... }
This causes Unity to crash. Without the parent field it won't crash but I need this field to store the parent of a node. What to do?
Answer by rabbitfang · Feb 22, 2012 at 05:47 AM
If I had to guess, I would say that parent
is conflicting with some variable of the System.ValueType
class. Try renaming it.
If extending System.ValueType
does in fact make things a struct
(I have had issues making structs in UnityScript so that might be how you do it), the issue might lie with the infinite recursion of instance generation.
You see, structs are essentially variables that are passed by value (like ints and floats). That is, the value of the variable is copied whenever it is passed into a function or referenced from the outside. Structs act the same way. Whenever the variable is needed outside of the current scope, a copy is made. This can be done efficiently because the number of bytes that the struct needs to exist is calculated at compile time (objects located inside of structs are stored as references, so when the struct is copied, the reference is copied instead of the object).
So, when you include a variable of the encapulating struct inside of that struct, an infinite loop is created.
It would be best to leave the TNode
class as a normal object class instead of a struct unless you need lots of short lived instances (in which case you may need to rethink how you are doing this as I do not know if C# will allow a struct to be stored explicitly as a reference).
The actual way that structs work is a little more complicated than this, and I most of my knowledge about them comes from C++, but from what I know, the implementation is fairly similar)
Your answer
Follow this Question
Related Questions
unity crashes when script runs 1 Answer
Why does my pathfinding script keep crashing Unity? 1 Answer
How to create random movement in 2D 2 Answers
Does UnityScript (Javascript) support classes/structs? 1 Answer
Where to use Structs and classes? 5 Answers