我是Unity的新手。我使用的是最新版本的Unity,5.1.2f1 Personal。
我想从特殊框架开始动画。不是第一次。
所以我搜索并得到这些答案;
http://answers.unity3d.com/questions/181903/jump-to-a-specific-frame-in-an-animation.html
http://answers.unity3d.com/questions/425985/set-the-current-time-frame-of-a-mecanim-animation.html
但在我的项目中,它没有用!我花了一些时间来解决这个问题。
情况就是这样。我正在制作Rockman(Megaman)游戏。
当角落Zero在摔倒时使用他的军刀时,我必须实施
falling_shot动画从画面开始。
观看此图片,以帮助您解释我必须做的事情。
这是一个简单的问题。如果我可以直接使用动画数组的索引访问每个帧,
我要做的就是将播放索引设置为下一帧的索引。这并不难。
但在Unity中,我无法直接访问动画组件
我发现我必须使用operator []之类的;
// set start frame with time 0.5
animation["JumpShotA"].time = 0.5f;
然而它没有用。这是播放动画“JumpShotAir”的代码。
这不是改变动画帧的代码,而只是播放JumpShotAir动画。
using UnityEngine;
using System.Collections;
public class ZController : MonoBehaviour {
Animator _animator;
// Use this for initialization
void Start () {
_animator = GetComponent<Animator>();
var animation = GetComponent<Animation>();
var jumpShotA = animation["JumpShotA"];
animation.clip = jumpShotA.clip;
animation.Play();
}
// Update is called once per frame
void Update () {
}
}
但是这段代码的结果是这样的;消息NullReferenceException:GetRef error。
我真的不知道。我错了什么?我的代码有什么问题吗?
我可以直接访问动画组件的数组吗?我该如何访问它?
如果您想下载我的测试项目,请查看。
Test project. Links to Google drive.
感谢阅读。
Unity窗口图片已更新。请检查我的错误。
<iframe width="560" height="315" src="https://www.youtube.com/embed/gOzhNK6qjNQ" frameborder="0" allowfullscreen></iframe>
我将动画类型更改为遗留但仍然存在问题...
答案 0 :(得分:1)
确保GameObject
的动画组件中的动画数组中存在JumpShotA剪辑。此错误表示您在尝试播放动画数组时没有JumpShotA
的引用。