关于Dotween使用的一些问题(Sequence)
第一个问题是关于值类型和引用类型的问题
值类型
结构体:struct(直接派生于System.ValueType);
数值类型:
整 型:sbyte(System.SByte的别名),short(System.Int16),int(System.Int32),long (System.Int64),byte(System.Byte),ushort(System.UInt16),uint (System.UInt32),ulong(System.UInt64),char(System.Char);
浮点型:float(System.Single),double(System.Double);
用于财务计算的高精度decimal型:decimal(System.Decimal)。
bool型:bool(System.Boolean的别名);
用户定义的结构体(派生于System.ValueType)。
枚举:enum(派生于System.Enum);
可空类型(派生于System.Nullable<T>泛型结构体,T?实际上是System.Nullable<T>的别名)。
分配在线程的堆栈(stack)上,并且不包含任何指向实例数据的指针 不可以传递 =相当于给左边的复制了一份
引用类型
数组(派生于System.Array)
用户用定义的以下类型:
类:class(派生于System.Object);
接口:interface(接口不是一个“东西”,所以不存在派生于何处的问题。Anders在《C# Programming Language》中说,接口只是表示一种约定[contract]);
委托:delegate(派生于System.Delegate)。
object(System.Object的别名);
字符串:string(System.String的别名)。
这些类型可以传递 =是赋值
当我用DoTween想根据一个枚举自动选择到底是位置还是大小还是缩放 然后发现 物体没有动value的值在变 因为Vector3不是class是struct不能传递 相当于给value复制了一份参数 Dotween改变的是他的参数

换成

返回一个这样


然后就变成了ulong?

我直接传递也没有报错说变成ulong 奇了怪
然后我又想起了ref可以传递参数

凉凉
又想到数组是引用类型

没报错运行看看能不能动
然而不能 整个数组是引用类型 数组的其中一个是值类型

然后只能复制粘贴3次 差不多的
然后是Sequence问题
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class DoTweenSequence : MonoBehaviour
{
public Transform[] cubes;
public Transform[] trans;
// Use this for initialization
void Start()
{
//整个的
Sequence seq = DOTween.Sequence();
for (int i = 0; i < cubes.Length; i++)
{
//独立的
//Sequence seq = DOTween.Sequence();
seq.Append(cubes[i].DOMove(trans[i].position, 2f));
}
}
}
这样一个一个Append是没有问题 依次播放
但是一般项目中我们会给一个list或者数组
记住不要在循环里创建动画队列 那个会产生个新的动画队列 我以为那个不是new 结果内部应该封装的有
然后我是声明一个初始化函数 再别的类调用
然后动画队列就一起播放了 就很奇怪


然而必须在调用的类中声明 这就很坑了