2016-11-23 11 views

Répondre

3

Mise à jour:

public Component AddComponent(string className); 

est maintenant dépréciée et enlevé il ne peut plus être utilisé pour le faire. Jetez un oeil à la méthode d'extension que j'ai faite, appelée AddComponentExt qui peut être utilisée pour ce faire here.

La réponse est d'utiliser: gameObject.AddComponentExt("Halo");


RÉPONSE VIEUX:

Même si cela a été répondu, je pense que d'autres personnes qui se déroulera dans ce sera cela utile.

En plus de rutter's réponse,

La classe Halo ne peut pas accéder directement à l'instar d'autres composants.

Il y a deux surcharges pour la fonction GetComponent:

public Component GetComponent(Type type); 
public Component GetComponent(string type); 

Et deux Surcharges pour la fonction AddComponent:

public Component AddComponent(Type componentType); 
public Component AddComponent(string className); 

Vous devez utiliser GetComponent et AddComponent avec le paramètre string pas l'un avec le paramètre Type.

GetComponent("Halo"); et AddComponent("Halo");va compiler.

GetComponent<Halo>(); et AddComponent<Halo>(); va pas compiler.

De plus, vous devez utiliser la réflexion pour activer/désactiver Halo en l'activant/désactivant.

méthode d'extension qui permet de basculer Halo on/off avec la réflexion:

public static class ExtensionMethod 
{ 
    public static void drawHalo(this Light light, bool value) 
    { 
     //Get Halo Component 
     object halo = light.GetComponent("Halo"); 
     //Get Enable Halo property 
     var haloInfo = halo.GetType().GetProperty("enabled"); 
     //Enable/Disable Halo 
     haloInfo.SetValue(halo, value, null); 
    } 
} 

Utilisation:

Light light = GameObject.Find("Point light").GetComponent<Light>(); 
light.drawHalo(true); //Extension function. pass true or false 

Remarque:

Assurez-vous d'attacher Halo au Light avant en utilisant cette fonction. Sélectionnez votre éclairage, puis passez à Composant ->Effets ->Halo. Vous pouvez également le faire à partir du script avec yourLight.AddComponent("Halo");.

+0

Merci! J'utilise ça maintenant. J'ai presque abandonné ça. – mindOfAi

+1

Je suis content que vous l'ayez trouvé utile. – Programmer

1

Halo est un composant séparé.

Pour ajouter un halo à une lumière: AddComponent<Halo>()

Pour accéder à l'auréole attaché à une lumière: GetComponent<Halo>()

La case à cocher « Dessiner Halo » dans l'inspecteur est un peu d'un hareng saur - il crée un composant Halo qui est ensuite masqué dans la vue de la hiérarchie, qui est osée mais qui est préservée des anciennes versions de Unity.

+0

Merci. C'est utile :) – mindOfAi