一、步骤
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;
}
}