Je n'arrive pas à trouver une propriété Draw Halo dans l'intellisense. Existe-t-il un moyen de définir sa valeur par programme? Merci!Comment puis-je changer la valeur de 'Draw Halo' dans Point Light - Unity3D
Répondre
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");
.
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.
Merci. C'est utile :) – mindOfAi
Merci! J'utilise ça maintenant. J'ai presque abandonné ça. – mindOfAi
Je suis content que vous l'ayez trouvé utile. – Programmer