2 votes

Unity Animation Event - Aucune fonction sélectionnée

J'ai fait des recherches sur Internet et j'ai essayé beaucoup de choses, et maintenant je deviens fou, parce que c'est juste une chose simple qui prend trop de temps pour être résolue. Donc dans le web il y a deux types de posts :

  1. La console donne l'erreur "Aucune fonction sélectionnée" et la solution est que des personnes ont ajouté par accident un événement d'animation et ne l'ont pas configuré. <-Ce n'est pas ce que je recherche
  2. J'ai ajouté un événement d'animation à mon clip, mais en cliquant sur le menu déroulant "Fonction", le message "Aucune fonction sélectionnée" apparaît et je ne peux rien sélectionner. <- C'est ce que je recherche. Ce genre de messages n'a jamais reçu de réponse.

Voici à quoi cela ressemble : enter image description here

Hiérarchie :

Objet 1
 Objet 1.1 <- A un script d'où je démarre les animations.
 Objet 1.2 <- A l'animateur. Rotation et mise à l'échelle de l'objet 1.2

Plus d'informations : Oui, j'ai d'abord sélectionné mon objet 1.2, puis le clip de droite dans la fenêtre d'animation et j'ai ajouté un événement d'animation.

6voto

derHugo Points 12631

Ce genre de messages n'a jamais reçu de réponse

Permettez-moi d'en douter.


Assurez-vous simplement que votre installation remplit les conditions suivantes :

AnimationEvent nécessite

  • le composant à partir duquel vous souhaitez utiliser une méthode est rattaché à l'objet même GameObject comme le Animator composant
  • la méthode que vous voulez appeler a une accessibilité et un type de retour public void
  • la méthode que vous voulez appeler a aucun ou un maximum paramètre
  • les types supportés pour le paramètre sont int , float , string , bool o UnityEngine.Object

Puisque votre script se trouve sur un autre GameObject, vous pourriez rediriger l'appel, par exemple comme ceci

public Redirector : MonoBehaviour
{
    // Either drag in via Inspector
    [SerializeField] private ScriptOnOtherObject _scriptOnOtherObject;

    // or get at runtime if you are always sure about the hierachy
    private void Awake()
    {
        _scriptOnOtherObject = transform.parent.GetComponent<ScriptOnOtherObject>();
    }

    // and now call this from the AnimationEvent
    public void DoIt()
    {
        _scriptOnOtherObject.TheMethodToCall();
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X