zoukankan      html  css  js  c++  java
  • xLua中导出Dotween

    前言

    在xlua的lua脚本中使用dotween,官方的文档中有提到可以导出,但未介绍详细的步骤,相信比较多的朋友有需要,刚好项目中也在使用xlua和dotween,所以做个笔记。

    基础知识:

    xLua:https://github.com/Tencent/xLua

    dotween:http://dotween.demigiant.com/

    关于dotween的使用,可以参考我之前的文章

    DOTween文档

    DoTween(HOTween V2) 教程

    我的测试环境:

    xLua 2.1.6

    dotween 1.1.x

    unity 5.3.5/5.4

    本文的测试代码:

    https://github.com/zhaoqingqing/blog_samplecode/blob/master/unity_helper/XLuaCustomExport.cs

    https://github.com/zhaoqingqing/blog_samplecode/blob/master/unity_helper/xlua_dotween_test.lua

    导出Dotween

    1、在项目的Asset目录下(自己项目的Scripts目录),新建一个class,命名为:XLuaCustomExport.cs

    2、导出脚本如下,如果在手机上调用报错,但PC上正常,请检查是否添加了[ReflectionUse]标签

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using UnityEngine;
    using UnityEngine.Events;
    using UnityEngine.UI;
    using XLua;
    
    /// <summary>
    /// xlua自定义导出
    /// </summary>
    public static class XLuaCustomExport
    {
        /// <summary>
        /// dotween的扩展方法在lua中调用
        /// </summary>
        [LuaCallCSharp]
        [ReflectionUse]
        public static List<Type> dotween_lua_call_cs_list = new List<Type>()
        {
            typeof(DG.Tweening.AutoPlay),
            typeof(DG.Tweening.AxisConstraint),
            typeof(DG.Tweening.Ease),
            typeof(DG.Tweening.LogBehaviour),
            typeof(DG.Tweening.LoopType),
            typeof(DG.Tweening.PathMode),
            typeof(DG.Tweening.PathType),
            typeof(DG.Tweening.RotateMode),
            typeof(DG.Tweening.ScrambleMode),
            typeof(DG.Tweening.TweenType),
            typeof(DG.Tweening.UpdateType),
    
            typeof(DG.Tweening.DOTween),
            typeof(DG.Tweening.DOVirtual),
            typeof(DG.Tweening.EaseFactory),
            typeof(DG.Tweening.Tweener),
            typeof(DG.Tweening.Tween),
            typeof(DG.Tweening.Sequence),
            typeof(DG.Tweening.TweenParams),
            typeof(DG.Tweening.Core.ABSSequentiable),
    
            typeof(DG.Tweening.Core.TweenerCore<Vector3, Vector3, DG.Tweening.Plugins.Options.VectorOptions>),
    
            typeof(DG.Tweening.TweenCallback),
            typeof(DG.Tweening.TweenExtensions),
            typeof(DG.Tweening.TweenSettingsExtensions),
            typeof(DG.Tweening.ShortcutExtensions),
            typeof(DG.Tweening.ShortcutExtensions43),
            typeof(DG.Tweening.ShortcutExtensions46),
            typeof(DG.Tweening.ShortcutExtensions50),
           
            //dotween pro 的功能
            //typeof(DG.Tweening.DOTweenPath),
            //typeof(DG.Tweening.DOTweenVisualManager),
        };
    }

    xLua中调用Dotween

    在Lua中调用dotween的示例如下:

    -- transform:DOMove(Vector3.zero, 3, false);
    
    --场景中绑定LuaBehaviour,执行Unity的默认函数
    
    function start()
        print("lua start .");
        local tween = self.transform:DOMoveX(10,3)
        --tween:OnComplete(){
        --    print("move callback")
        --}
    end

  • 相关阅读:
    java 面向对象(十八):包装类的使用
    java 面向对象(十七):单元测试方法
    rxjava2学习
    多线程-wait(),notify(),notifyAll()
    多线程-Thread.join()的运用
    66. Plus One
    理解Android View的事件传递机制
    78. Subsets
    程序员学习与成长的方法(转发)
    android查询天气demo,基于mvp+kotlin+rxjava2+retrofit2
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/6753701.html
Copyright © 2011-2022 走看看