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

一、步骤

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面板的动画)