[Unity热更新]tolua# LuaFramework(七):lua使用DOTween
相关链接:
http://blog.csdn.net/u010665359/article/details/50950989
http://blog.csdn.net/u010665359/article/details/51013433
在lua中使用DOTween
1.先下载一些东西:http://pan.baidu.com/s/1pLOSxx5
2.在Assets\LuaFramework\Editor下建两个文件夹,分别命名为LuaExtensions和Wrap,然后在LuaExtensions文件夹内放入ToLuaFile.cs和ToLuaFileExport.cs,然后点击菜单栏Lua/Export ToLuaExtendFile,如无意外就会看到:
3.将项目中的ToLuaExport.cs进行一些修改,当然你可以不修改,直接将下载的ToLuaExport.cs替换原来的,注意最好备份。要修改的地方用红色标明了:
static void SaveFile(string file)
{
using (StreamWriter textWriter = new StreamWriter(file, false, Encoding.UTF8))
{
StringBuilder usb = new StringBuilder();
usb.AppendLineEx("//this source code was auto-generated by tolua#, do not modify it");
foreach (string str in usingList)
{
usb.AppendFormat("using {0};\r\n", str);
}
usb.AppendLineEx("using LuaInterface;");
if (ambig == ObjAmbig.All)
{
usb.AppendLineEx("using Object = UnityEngine.Object;");
}
if (NeedDotweenNamespace())//给导出dotween的文件新增dotween的命名空间
{
usb.AppendLine("using DG.Tweening;");
}
usb.AppendLineEx();
textWriter.Write(usb.ToString());
textWriter.Write(sb.ToString());
textWriter.Flush();
textWriter.Close();
}
}
static bool NeedDotweenNamespace()
{
//UnityEngine.Debug.Log(libClassName);
switch (libClassName)
{
case "Transform":
case "AudioSource":
case "Camera":
case "Component":
case "Light":
case "Material":
case "Sequence":
case "Tween":
case "Tweener":
case "Rigidbody":
return true;
}
return false;
}
static void ProcessExtends(List<MethodInfo> list)
{
extendName = "ToLua_" + className.Replace(".", "_");
extendType = Type.GetType(extendName + ", Assembly-CSharp-Editor");
List<string> removeMd = new List<string>();
if (extendType != null)
{
List<MethodInfo> list2 = new List<MethodInfo>();
list2.AddRange(extendType.GetMethods(BindingFlags.Instance | binding | BindingFlags.DeclaredOnly));
for (int i = list2.Count - 1; i >= 0; i--)
{
if (list2[i].Name.Contains("op_") || list2[i].Name.Contains("add_") || list2[i].Name.Contains("remove_"))
{
if (!IsNeedOp(list2[i].Name))
{
//list2.RemoveAt(i);
continue;
}
}
string removeMdName = list2[i].Name;
if (!removeMd.Contains(removeMdName))//防止扩展函数里面重载函数被去除
{
removeMd.Add(removeMdName);
list.RemoveAll((md) => { return md.Name == removeMdName; });
}
//list.RemoveAll((md) => { return md.Name == list2[i].Name; });
if (!IsObsolete(list2[i]))
{
list.Add(list2[i]);
}
}
FieldInfo field = extendType.GetField("AdditionNameSpace");
if (field != null)
{
string str = field.GetValue(null) as string;
string[] spaces = str.Split(new char[] { ';' });
for (int i = 0; i < spaces.Length; i++)
{
usingList.Add(spaces[i]);
}
}
}
}
打开CustomSettings.cs:
_GT(typeof(DG.Tweening.AutoPlay)),
_GT(typeof(DG.Tweening.AxisConstraint)),
_GT(typeof(DG.Tweening.Ease)),
_GT(typeof(DG.Tweening.LogBehaviour)),
_GT(typeof(DG.Tweening.LoopType)),
_GT(typeof(DG.Tweening.PathMode)),
_GT(typeof(DG.Tweening.PathType)),
_GT(typeof(DG.Tweening.RotateMode)),
_GT(typeof(DG.Tweening.ScrambleMode)),
_GT(typeof(DG.Tweening.TweenType)),
_GT(typeof(DG.Tweening.UpdateType)),
_GT(typeof(DG.Tweening.DOTween)),
_GT(typeof(DG.Tweening.DOVirtual)),
_GT(typeof(DG.Tweening.EaseFactory)),
_GT(typeof(DG.Tweening.Tweener)),
_GT(typeof(DG.Tweening.Tween)),
_GT(typeof(DG.Tweening.Sequence)),
_GT(typeof(DG.Tweening.TweenParams)),
_GT(typeof(DG.Tweening.DOTweenAnimation)),
_GT(typeof(DG.Tweening.DOTweenPath)),
_GT(typeof(DG.Tweening.DOTweenVisualManager)),
_GT(typeof(DG.Tweening.Core.ABSSequentiable)),
_GT(typeof(DG.Tweening.Core.TweenerCore<Vector3, Vector3, DG.Tweening.Plugins.Options.VectorOptions>)).SetWrapName("TweenerCoreV3V3VO").SetLibName("TweenerCoreV3V3VO"),
4.重新生成wrap,然后测试:transform:DOMove(Vector3.zero, 3, false);
5.以DOMove为例,它需要的参数个数和类型可以看ToLua_UnityEngine_Transform
[Unity热更新]tolua# LuaFramework(七):lua使用DOTween相关推荐
- Unity热更新ToLua框架学习
一.Lua语言学习 二.ToLua框架 三.使用ToLua框架对Lua&C#进行交互 四.使用Lua对GameObj进行操作 五.将游戏对象打包&解包 六.将Lua脚本文件进行打包&a ...
- unity 热更新:C#与Lua相互调用(转载)
一.基本原理 简单地说,c#调用lua, 是c# 通过Pinvoke方式调用了lua的dll(一个C库),然后这个dll执行了lua脚本. ULua = Lua + LuaJit(解析器.解释器) + ...
- Unity 热更新技术 |(七)完整热更新实战案例学习使用,包括资源热更新及代码热更新【文末书】
- Unity热更新机制
前言 游戏上线后,难免会有一些测试阶段没发现的bug,bug这东西,可大可小. 如果出现重大bug,而又没有热更技术,那么我们为了修复bug就只能强制玩家去商店下载新包,那造成的玩家流失是非常可怕的. ...
- C# 实现 rtc_通过Xlua实现unity热更新的一个小例子
通过Xlua实现unity热更新的一个小例子 一.介绍 热更新是指在更新游戏资源或者逻辑的时候不需要开发者将游戏再打包.发布.玩家重新下载安装包,而是可以通过将需要更新的资源打包成AssetBun ...
- unity案例 mysql lua_通过Xlua实现unity热更新的一个小例子
通过Xlua实现unity热更新的一个小例子 一.介绍 热更新是指在更新游戏资源或者逻辑的时候不需要开发者将游戏再打包.发布.玩家重新下载安装包,而是可以通过将需要更新的资源打包成AssetBun ...
- [Unity热更新]04.卸载方式
[Unity热更新]04.卸载方式 参考链接: https://www.jianshu.com/p/b37ee8cea04c 1.AssetBundle.Unload(false):释放AssetBu ...
- Unity热更新方案探索与讨论
热更新必要性 App Store审核周期长 应用更新频繁 更新版本对留存数据有很大影响 Lua相关 Lua:脚本,解释性语言 LuaJit:扩展高效版本,支持编译成二进制代码. Tolua++:C/C ...
- unity热更新json_unity3d热更新插件uLua学习整理
前言IOS不能热更新,不是因为不能用反射,是因为 System.Reflection.Assembly.Load 无法使用 System.Reflection.Emit 无法使用 System.Cod ...
最新文章
- LSM 优化系列(二)-- dCompaction: Speeding up Compaction of the LSM-Tree via Delayed Compaction
- Mysql基础知识—索引
- C++中的内存管理(new、delete、内存泄漏)
- C#中使用ProtoBuf将list进行序列化并保存到文件
- Golang的单引号、双引号与反引号
- ai钢笔工具怎么描线_骨灰级的AI钢笔工具运用技巧
- 理解C# 4 dynamic(2) – ExpandoObject的使用
- 如何不使用Java 8默认方法
- 开课吧Java课堂之SortedSet接口如何去用?
- 【硬石科技】电机系列教学(基于STM32)——舵机的控制
- 浪潮服务器键盘自动输空格,键盘空格键的常用技巧分享
- GPS基带P码处理总结——FPGA实现的关键点
- 深夜街头被偷拍的扎心瞬间:成年人的体面,都是易碎品
- Android基础整合项目之节日群发助手(二)
- (原创)关于中国象棋的
- FMDB的简单应用(4篇)
- java孙膑与庞涓_鬼谷子数问题的JAVA实现
- 什么叫真正的IT男?
- Python操作Neo4j图数据库的两种方式
- 《网络攻防》实验三:免杀原理与实践
热门文章
- Flutter绘制指南09-动画曲线和方法
- [精]Oracle 内存结构详解
- PyTorch Geometric(PyG) torch_geometric.nn.conv.gcn_conv源码详解
- jupyter中关于pandas的dataframe行列显示不全与复原
- php冰蝎一句话,利用动态二进制加密实现新型一句话木马之PHP篇(转)冰蝎
- 动态jsp页面转pdf项目示例
- kong mysql_konga 安装
- ubuntu返回图形界面_Ubuntu设置命令行界面和图形界面切换方法
- 线性变换及其对应的矩阵
- Odoo与浪潮合资研发PS Cloud之如何在Odoo中进行搜索引擎优化(5)