找回密码
 立即注册
查看: 240|回复: 0

xLua中导出Dotween

[复制链接]
发表于 2021-8-13 08:30 | 显示全部楼层 |阅读模式
前言
在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.2.x
unity 2018.2.X
导出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;
///
/// xlua自定义导出
///
public static class XLuaCustomExport
{
///
/// dotween的扩展方法在lua中调用
///
[LuaCallCSharp]
[ReflectionUse]
public static List dotween_lua_call_cs_list = new List()
{
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),
  1.     typeof(DG.Tweening.DOTween),
  2.     typeof(DG.Tweening.DOVirtual),
  3.     typeof(DG.Tweening.EaseFactory),
  4.     typeof(DG.Tweening.Tweener),
  5.     typeof(DG.Tweening.Tween),
  6.     typeof(DG.Tweening.Sequence),
  7.     typeof(DG.Tweening.TweenParams),
  8.     typeof(DG.Tweening.Core.ABSSequentiable),
  9.     typeof(DG.Tweening.Core.TweenerCore<Vector3, Vector3, DG.Tweening.Plugins.Options.VectorOptions>),
  10.     typeof(DG.Tweening.TweenCallback),
  11.     typeof(DG.Tweening.TweenExtensions),
  12.     typeof(DG.Tweening.TweenSettingsExtensions),
  13.     typeof(DG.Tweening.ShortcutExtensions),
  14.     //typeof(DG.Tweening.ShortcutExtensions43),
  15.     //typeof(DG.Tweening.ShortcutExtensions46),
  16.     //typeof(DG.Tweening.ShortcutExtensions50),
  17.    
  18.     //dotween pro 的功能
  19.     //typeof(DG.Tweening.DOTweenPath),
  20.     //typeof(DG.Tweening.DOTweenVisualManager),
  21. };
复制代码
}
复制代码
xLua中调用Dotween
在Lua中调用dotween的示例如下:
复制代码
– transform:DOMove(Vector3.zero, 3, false);
–场景中绑定LuaBehaviour,执行Unity的默认函数
–[==[
    Author: KevinCreateTime: 2018-11-28 18:53:31Organization: #ORGANIZATION#Description:
    –]==]
    local GameObject = CS.UnityEngine.GameObject
    local PrimitiveType = CS.UnityEngine.PrimitiveType
local M = {}
----- CODE -----
local cube = GameObject.CreatePrimitive(PrimitiveType.Cube)
cube.transform:DOScale(0.1, 1):OnComplete(function()
print(cube.name, “DOScale Complete”)
end)
local sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere)
local sequence = CS.DG.Tweening.DOTween.Sequence()
sequence:Append(sphere.transform:DOMoveX(1, 1))
sequence:Append(sphere.transform:DOScale(1.5, 1))
sequence:OnComplete(function()
print(sphere.name, “Sequence Complete”)
end)
----- CODE -----
return M
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 08:44 , Processed in 0.107488 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表