Salut,
boubouk50 a écrit : ↑31 Août 2017 09:59
[...] Alors personnellement, je ne sais absolument pas pourquoi (si d'ailleurs quelqu'un pouvait l'expliquer svp) mais bon. [...]
Je pense que l'explication serais que le "ParticleSystem.main" est une structure de donnée. Et une structure fonctionne par valeur et non pas référence. Je ne vais pas rentrer dans les détails car c'est assez complexe à expliquer (
Une piste ici si tu veux mais en gros c'est dut au fait que quand tu fait "parent.structure", ça te renvoi une copie de la structure. Et donc si tu fais "parent.structure.x = y;" c'est pas la structure dans la classe qui est modifié mais la copie. Donc c'est plus une protection pour éviter que tu modifie un élément de la copie qui seras détruite juste après).
C'est pour ça que tu dois forcément stocker une référence sur la structure "ParticleSystem.main", changer ses valeurs et ensuite réassigner la référence.
C'est exactement le même principe que pour les Color. Essaye de faire :
Normalement il va te dire que c'est impossible de faire ça. Car Color n'est pas une classe mais une structure de donnée et ce n'est pas possible de changer les valeurs d'une structure dans cette configuration.
Les infos c'est là :
Structs vs. Classes
Structs may seem similar to classes, but there are important differences that you should be aware of. First of all, classes are reference types and structs are value types. By using structs, you can create objects that behave like the built-in types and enjoy their benefits as well.
Heap or Stack?
When you call the New operator on a class, it will be allocated on the heap. However, when you instantiate a struct, it gets created on the stack. This will yield performance gains. Also, you will not be dealing with references to an instance of a struct as you would with classes. You will be working directly with the struct instance. Because of this, when passing a struct to a method, it's passed by value instead of as a reference.