Créer son jeu pour 0 € ou le blog d'un créateur indépendant fauché.

Créer son jeu pour 0 € ou le blog d'un créateur indépendant fauché.

Par krys64 Blog créé le 21/11/10 Mis à jour le 04/11/15 à 21h48

Pourquoi s'embêter à monter un studio de jeu vidéo à coups de millions et d'équipes surdimensionnées alors qu'il est si simple de tout faire soi-même ?
Vous suivrez sur ce blog les aventures d'un créateur indépendant qui va édifier petit à petit son projet de jeu afin de conquérir le monde.

Ajouter aux favoris
Signaler

SUIVEZ NOTRE DEVLOG SUR : STUDIO KRKR

En développant l’éditeur de niveau, je suis tombé sur une problématique dont la solution est en fait assez simple. En effet, utilisant les mêmes prefabs dans le jeu et l’éditeur, comment désactiver les scripts de ceux-ci lorsqu’ils sont instanciés dans l’éditeur pour qu’ils ne partent pas automatiquement dans tous les sens.
Une solution serait d’ajouter une fonction init() qui serait lancée dans le jeu sur chaque prefab…compliqué et fastidieux.
Je me suis demandé alors comment désactiver tous les composants de scripts sans désactiver les autres composants builtin d’Unity (Collider, Transform, Renderer…).
La solution est de mettre tous les composants d’un GameObject dans un tableau, de mettre leur type dans une chaine, et si la chaine ne contient pas “UnityEngine”, alors il s’agit d’un script. Il suffit ensuite de prendre le composant par son nom de type et de le forcer en Monobehaviour, ce qui permet d’accéder à la fonction enabled (qui n’existe pas sur Component).
Magique !

GameObject tileCreated;

MonoBehaviour _script;
string _type;

Component[] _components=tileCreated.GetComponents<Component>();

foreach (var _component in _components) {
_type=_component.GetType().ToString();
if (_type.IndexOf("UnityEngine")==-1) {
_script= tileCreated.GetComponent(_type) as MonoBehaviour;
_script.enabled=false;

}
}

Ajouter à mes favoris Commenter (0)

Commentaires

Archives