在调试的过程中,还遇到下列问题
所生成项目的处理器架构"MSIL"与引用"AmplifyMotionEditor"的处理器架构"x86"不匹配。
上述问题,重启Unity就行了。
----------------------------------------------------------------------------官方回复
这是比较低级的错误,跟 db 没有太大关系,可以参考这个问题https://github.com/DragonBones/DragonBonesCSharp/issues/17
armature.animation.play("走"); // 这个意思就是从第一帧播放走路动画。
想想下面的情形会发生什么。
每帧执行()
{
armature.animation.play("走");
}
使用player.animation.GetState("Walk").isPlaying;来判断某动画是否正在播放
如果不是,就使用player.animation.play("Walk");
--------------------------------------------------------------------------------------------------------------------------------------------------------
解决方法如下所示:
private void TestKey()
{
if (Input.GetKey(mKeyRight) ||
Input.GetKey(mKeyLeft) ||
Input.GetKey(mKeyBackward) ||
Input.GetKey(mKeyForward) ||
Input.GetKeyDown(mKeyRight) ||
Input.GetKeyDown(mKeyLeft) ||
Input.GetKeyDown(mKeyBackward) ||
Input.GetKeyDown(mKeyForward))//当按下按键的时候
{
if (person_armature.animation.lastAnimationName == "Running")//当骨骼动画的上一个动画状态是“跑步”
{
if (person_armature.animation.GetState("Running").isPlaying)//当骨骼动画的上一个动画状态是“跑步” 正在播放
{
Debug.Log("::::::::: == " + status_Person);
}
else//当骨骼动画的上一个动画状态是“跑步” 没有 正在播放 {
person_armature.animation.Play("Running");
}
}
else//当骨骼动画的上一个动画状态 不是 是“跑步” {
person_armature.animation.Play("Running");
}
}//IF判断 按键按下语句
else
{
if (person_armature.animation.lastAnimationName == "Walking")
{
if (person_armature.animation.GetState("Walking").isPlaying)
{
Debug.Log("::::::::: == " + status_Person);
}
else
{
person_armature.animation.Play("Walking");
}
}
else
{
person_armature.animation.Play("Walking");
}
}//else语句结束
}//TestKey函数结束
为什么要加上
当骨骼动画的上一个动画状态是“跑步”
的判断呢,因为 现在播放 的状态 是“ 走路”的时候,动画为“跑步”的动画,没有实例化
其余状态没有实例化,就对其进行赋值操作,就会 报错 ,并且无法编译
代码如下所示:(草稿部分 代码没有删除)
代码部分结束
--------------------------------------------------------------------------------------------------------------------------------------------------------
总结
失败时候:
想到,如果 动画状态改变,就要 获得当前动画状态和 改变播放动画状态
查找资料http://developer.egret.com/cn/apidoc/index/name/dragonBones.Animation#play
找到相关资料,找到 player.animation.isPlaying;
并没有思考 ,判断不同动画状态 是否正在播放
player.animation.GetState("Walk").isPlaying;
究其原因:没有仔细思考总结问题 ,为什么会出现这样的问题,是什么导致了当前的问题,
怎样解决对应的问题
运行成功:
(大图)
最好在if (person_armature.animation.lastAnimationName == "Walking")语句前面
加上一个 IF 判断 if (person_armature)
--------------------------------------------------------------------------------------------------------------------------------------------------------
参考资料:(本文章 未使用下列文章)
1.
【Unity 3D】学习笔记四十六:输入与控制??键盘事件
2.
3.
4.
5.