美文网首页unity3d插件
u3d_插件DoTween:(03)控制Cube和UI面板的动画

u3d_插件DoTween:(03)控制Cube和UI面板的动画

作者: liyuhong165 | 来源:发表于2017-04-24 17:55 被阅读90次

    一、步骤

    1.创建一个cube
    2.从(0,0,0)到(10,10,10)的位置变化
    3.定义一个属性,持有cube,然后执行动画在方法Update里面执行
        public Transform cubeTransform;
      void Start () {
            DOTween.To( ()=>myValue, x=>myValue = x, new Vector3(10,10,10),2);
    }
        void Update () {
            // 这样就确保 cube的每一帧都会和 myValue保存一致
            cubeTransform.position = myValue;       
        }
    
    4.对UI使用Dotween(image、text)
    5.修改myValue的默认值的为 image的原始位置
    5.1 通过代码修改myValue到终点位置 
    5.2 将myValue的值 进行和UI同步
    6.移动的时候 有问题,可能taskPanelTransform 移动的是世界坐标(所以我们需要设置局部坐标)
        taskPanelTransform.localPosition = myValue;
    7.对float的类型 做一个动画 (可以实现渐变效果)
    
    
    二、错误
    UnassignedReferenceException: The variable taskPanelTransform of GetStart has not been assigned.
    You probably need to assign the taskPanelTransform variable of the GetStart script in the inspector.
    UnityEngine.Transform.set_position (Vector3 value) (at /Users/builduser/buildslave/unity/build/artifacts/generated/common/runtime/TransformBindings.gen.cs:28)
    GetStart.Update () (at Assets/Scripts/GetStart.cs:36)
    
    
    没有UI里面对taskPanelTransform属性进行绑定
    
    三、code
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using DG.Tweening; // 引入命名空间
    
    public class GetStart : MonoBehaviour {
    
    
        public Vector3 myValue = new Vector3(0,0,0); // 创建一个变量 ,默认值为000
    
        public Transform cubeTransform; // cube 
    
        public RectTransform taskPanelTransform; // 任务面板的位置
    
        public float myValue2 = 0; // 可以用来做渐变效果
    
        void Start () {
    
            // 对变量做一个动画(通过差值的方式去修改一个值的变化)
            // 当前的值 到 另外一个值
            // To方法使用到了 C#里面的lambda表达式(前面两个参数,两个委托类型,两个方法) (可以查看c#教程)
            // x = myValue
        
            /*
             第一个参数 : ()=>myValue 对这个值进行修改,把myValue返回
             第二个参数 : x=>myValue = x 。修改的值 赋值给myValue . 传递一个值 DoTween已经帮我们计算好的值。把这个值赋值给myValue myValue=x      
             第三个参数 :  整个动画的目标值
             第四个参数 : 由当前值到目标值 需要的时间
            */
    
    //      DOTween.To( ()=>myValue, x=>myValue = x, new Vector3(0,0,0),2);
            DOTween.To(()=>myValue2,x=>myValue2 =x ,10,2);
    
    
        }
        
        void Update () {
            // 这样就确保 cube的每一帧都会和 myValue保存一致
    //      cubeTransform.position = myValue;       
    //      taskPanelTransform.position = myValue;
            taskPanelTransform.localPosition = myValue;
    
        }
    } 
    
    

    相关文章

      网友评论

        本文标题:u3d_插件DoTween:(03)控制Cube和UI面板的动画

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