美文网首页
解决AnimationClip.SetCurve RectTra

解决AnimationClip.SetCurve RectTra

作者: su9257_海澜 | 来源:发表于2018-05-01 02:45 被阅读107次

    搬迁原来博客海澜CSDN

    在项目开发中有需求动态创建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);  
        }  
    }  
    

    相关文章

      网友评论

          本文标题:解决AnimationClip.SetCurve RectTra

          本文链接:https://www.haomeiwen.com/subject/mlxxrftx.html