您的位置:首页 > 其它

解决AnimationClip.SetCurve RectTransform Color参数 出现Missing!的情况

2017-07-12 11:42 519 查看
在项目开发中有需求动态创建Animationclip设置其中的AnimationCure曲线,但是其中按照官方给出的示例方式设置一些参数的时候会出现Missing丢失的情况





经过查找一些资料发现这根他的命名方式可能有关系





这种命名方式第一个字母会自动大写





这种也会保持大写





但是这种命名方式会自动把m_剔除掉,然后首字母自动大写,所以我猜测在unity内部对于组建属性的命名有些可能是采用匈牙利命名法,这种命名方式再早期C++比较常见

所以参数改成匈牙利命名法





完美解决~~

附带unity官方API示例

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Animation))]
public class ExampleClass : MonoBehaviour {
public Animation anim;
void Start() {
anim = GetComponent<Animation>();
AnimationCurve curve = AnimationCurve.Linear(0.0F, 1.0F, 2.0F, 0.0F);
AnimationClip clip = new AnimationClip();
clip.legacy = true;
clip.SetCurve("", typeof(Transform), "localPosition.x", curve);
anim.AddClip(clip, "test");
anim.Play("test");
}
}

// This script example shows how SetCurve() can be used
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
// Animate the position and color of the GameObject
public void Start()
{
Animation anim = GetComponent<Animation>();
AnimationCurve curve;

// create a new AnimationClip
AnimationClip clip = new AnimationClip();
clip.legacy = true;

// create a curve to move the GameObject and assign to the clip
Keyframe[] keys;
keys = new Keyframe[3];
keys[0] = new Keyframe(0.0f, 0.0f);
keys[1] = new Keyframe(1.0f, 1.5f);
keys[2] = new Keyframe(2.0f, 0.0f);
curve = new AnimationCurve(keys);
clip.SetCurve("", typeof(Transform), "localPosition.x", curve);

// update the clip to a change the red color
curve = AnimationCurve.Linear(0.0f, 1.0f, 2.0f, 0.0f);
clip.SetCurve("", typeof(Material), "_Color.r", curve);

// now animate the GameObject
anim.AddClip(clip, clip.name);
anim.Play(clip.name);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐