【问题-已解决】Unity3d Animator的状态转换时,状态变量改变而State没有改变

先给出素材:
Tip Panel:
这里写图片描述
动画状态机:
用于控制Tip Panel的动画,通过将Exit变量设置为True时执行Tip Panel的退出动画。
这里写图片描述
ClosePanel()代码:
某用于统一管理Panel的管理类中统一关闭Panel的方法。通过传入参数name(要关闭的Panel的名字),先调用对应panel的OnClosing方法执行一些逻辑后才Destroy掉panel的实例。

/// <summary>
/// close a panel.
/// </summary>
/// <param name="name">type string name, panel's name.</param>
public void ClosePanel(string name)
{
    //...

    panel.OnClosing ();                                         
    GameObject.Destroy (panel.gameObject);  
}

OnClosing()代码:
panel关闭前执行的逻辑在这里实现。
其中,exit2Hash是状态Exit变量的hash值。

public void OnClosing ()
{
    animator.SetBool (exit2Hash, true);
    Debug
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Unity中,Animator组件是用于控制角色动画的关键组件之一。Animator可以通过状态State)来管理和转换不同的动画。在运行,可以通过以下几种方式来获取AnimatorState。 1. GetCurrentAnimatorStateInfo(int layerIndex):使用该方法可以获取指定层级(layerIndex)上当前播放动画的状态信息。返回的AnimatorStateInfo对象包含了有关当前状态的信息,如动画名称、速度、是否循环等。 示例代码: ```csharp Animator animator = GetComponent<Animator>(); AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0); string currentAnimationName = stateInfo.IsName("Idle") ? "Idle" : stateInfo.IsName("Run") ? "Run" : "Other"; Debug.Log("Current animation: " + currentAnimationName); ``` 2. GetCurrentAnimatorClipInfo(int layerIndex):可以获取指定层级(layerIndex)上所有当前播放动画的剪辑信息。返回的AnimatorClipInfo数组包含了所有当前动画的名称和权重信息。 示例代码: ```csharp Animator animator = GetComponent<Animator>(); AnimatorClipInfo[] clipInfo = animator.GetCurrentAnimatorClipInfo(0); foreach(AnimatorClipInfo clip in clipInfo) { Debug.Log("Current animation: " + clip.clip.name); } ``` 3. GetCurrentAnimatorClipInfo(int layerIndex, Transform avatarMask):可以获取指定层级(layerIndex)上受限于Avatar掩码(avatarMask)的当前播放动画的剪辑信息。这在需要筛选特定动画的情况下特别有用。 示例代码: ```csharp Animator animator = GetComponent<Animator>(); AnimatorClipInfo[] clipInfo = animator.GetCurrentAnimatorClipInfo(0, avatarMask); foreach(AnimatorClipInfo clip in clipInfo) { Debug.Log("Current animation: " + clip.clip.name); } ``` 这些方法可以在MonoBehaviour脚本的Update函数中持续调用,以实获取Animator状态信息。可以使用这些信息来根据不同的状态来进行相应的逻辑处理,例如改变角色控制器的移动速度、音效的播放等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值