Unity3d c# - Vector3 en tant que paramètre par défaut
Comment pouvons-nous ajouter Vector3
comme paramètre par défaut pour une méthode? par exemple:
Void SpawnCube(Vector3 p = new Vector3(0,0,0)){...}
J'ai juste essayé la ligne de sujet, j'ai une erreur:
Expression attribuée à l'option de paramètre " p " doit être une constante ou une valeur par défaut
Je veux personnaliser une fonction pour frayer certains game objects
que si je n'ai pas fournir la transform.position
, il ira à (0,0,0)
.
OriginalL'auteur sooon | 2015-05-18
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas. La valeur par défaut arguments sont quelque peu limitées. Voir cette page MSDN.
Dans le cas particulier que vous avez posté, cependant, je soupçonne que
new Vector3()
sera equivelent ànew Vector3(0,0,0)
, de sorte que vous pouvez être en mesure de l'utiliser à la place.Si vous avez besoin d'un non-valeur zéro par défaut, vous pouvez être en mesure d'utiliser la surcharge de méthode à la place.
OriginalL'auteur Jason Watkins
Je sais que c'est déjà répondu, mais je veux juste ajouter d'autres façons de le faire.
Vector3? p
etVector3 bar = default(Vector3)
devrait le faire.Comme htmlcoderexe souligné,
À utiliser
p
, vous devez utiliserp.Value
ou en fonte de lap
retour àVector3
avec((Vector3)p)
.Par exemple, pour accéder à la
x
valeur de cette fonction avec lap
variable,p.Value.x
, ou((Vector3)p).x
.OU
Vector3(0,0,0)
?oui. essayez-le vous-même avec de débogage.journal et appeler la fonction sans passer n'importe quelle valeur.
Si vous allez avec
Vector3?
, vous aurez besoin de le jeter ou de l'utilisationp.Value
, sinon vous aurez une erreur de type.Oui, c'est vrai. J'ai modifié ma réponse pour que ce soit clair.
OriginalL'auteur Programmer
Salut, je viens de tomber sur cette question lorsque j'avais besoin de la Vector3 être facultatif. Mais il serait dire que j'ai besoin d'un moment de la compilation constante. Pour contourner ce problème, j'ai utilisé ceci :
OriginalL'auteur Dalton