本文共 1814 字,大约阅读时间需要 6 分钟。
在项目开发中有需求动态创建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(); 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 usedusing UnityEngine;using System.Collections;public class ExampleClass : MonoBehaviour{ // Animate the position and color of the GameObject public void Start() { Animation anim = GetComponent(); 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); }}