美文网首页Unity乱七八糟技巧
关于Dotween使用的一些问题(Sequence)

关于Dotween使用的一些问题(Sequence)

作者: 罗卡恩 | 来源:发表于2019-04-30 11:54 被阅读256次

    第一个问题是关于值类型和引用类型的问题
    值类型
    结构体: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改变的是他的参数


    image.png

    换成


    image.png
    返回一个这样
    image.png
    image.png

    然后就变成了ulong?


    image.png

    我直接传递也没有报错说变成ulong 奇了怪

    然后我又想起了ref可以传递参数


    image.png

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


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

    然后只能复制粘贴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 结果内部应该封装的有
    然后我是声明一个初始化函数 再别的类调用
    然后动画队列就一起播放了 就很奇怪


    image.png image.png

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

    相关文章

      网友评论

        本文标题:关于Dotween使用的一些问题(Sequence)

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