ulua】的更多相关文章

ulua 路径小记 在学习ulua时,require模块的根路径可以为项目的Lua文件夹或者ToLua文件夹(Editor下),但是在package.path和package.cpath中并没有看到当前项目的路径,那require是如何找到Lua和ToLua文件夹的路径的呢? ulua在初始化LuaState时,会先解析package.path, 并将其存入LuaFileUtils的SearchPaths中(LuaState.cs line:603),并将Lua和ToLua的目录添加其中(Lua…
上次的对比大家还有印象否,C#Light和ulua对比各有胜负 今天我们加入一个去反射优化,这是uLua没办法实现的优化,我们也就只能不要脸的胜之不武了 以原生执行同一测试时间为X1,数字越小的越快 项目 uLua C#Light C#light(去反射优化) 性能测试一 X4.5 X4.5 X2.19 性能测试二 X4.3 X3.63(快15%) X3.01 性能测试三 X6.87(快20%) X9.01 X3.77         这个测试我已经不需要帮你算快了多少了 C#Light测试执行…
http://www.unity蛮牛.com/thread-32861-1-1.html 测试环境: unity4.5.2  三个脚本全是源码导入  PC :处理器 Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz 3.60GHz  内存: 8.00GB  系统 : Windows 7 64位先贴下源码:(注:cls的作者说 cls脚本作用域判断比较厉害 所以利用脚本里面的for循环 可能有点损耗cls的测试结果 更多测试结果请下载源码自行测试)          …
ulua http://www.yanyulin.info/pages/2015/01/27193946190814.html   http://www.manew.com/blog-27966-2568.html?_dsign=0c1fb317   ulua 下载地址 http://ulua.org/index.html   slua 下载地址 https://github.com/pangweiwei/slua…
基于ulua 1.25版本,开启C#类型动态注册. 一.  步骤 注册需要Wrap的C#类型. 在WrapFile.cs类中,使用_GT(typeof(XXX)), 注册需要Wrap的C#类型 注册的C#类型被包装成BindType对象,在BindType构造函数里获取注册类型的类名,注册给Lua的名称,基类名称,Wrap的文件名称等信息,并保存在相应的BindType对象中.(这些是在WrapFile类创建时就生成的) 2. 执行编辑器脚本,生成Wrap的C#类, LuaBinder类,以及W…
最近要学习热更新,搜了下,选择了ulua这个插件,本人也是新人.对这个插件也是一知半解,不过幸好加了专门讨论这一块的群,这个群的技术氛围还是很浓重的,特别是已经形成了一套自己的lua学习框架.最近周末就抽空研究了一下. 群号这里分享一下给大家 Unity3D&uLua技术交流群 341746602 开始这篇我希望你对热更新有一定了解,并且对ulua有初步的尝试. 一.打包 lua的后缀是不被支持打包进assertbundle的,所以我们一般把 .lua后缀 变为.lua.txt 或者 .lua.…
这篇笔记主要集中学习一下uLua和Unity3D之间相互调用的方法,我们导入了uLua之后,现在会弹出一个类似学习屏幕的东西,如下: 先赞一个! Unity3D调用Lua Unity3D调用Lua的方法还是比较简单的,所以先说这个,由于这部分在学习笔记(一)中已经说的挺多的了,更多的内容点击这里回去看,所以这里我们就来看一个简单的示例即可: using LuaInterface; using UnityEngine; public class UnityCallLua : MonoBehavio…
uLua&SimpleFramework入门视频教程网盘地址 视频教程地址 http://pan.baidu.com/s/1gd8fG4N游戏框架地址 https://github.com/jarjin游戏案例地址 http://www.ulua.org/showcase.html ulua群里的一些资料,转过来方面查看   ulua学习顺序.请根据自身了解的知识入座. 初级:SimpleFramework框架 中级:ulua插件.cstolua 高级:底层库编译. 框架的角色定位分为2种, 第…
uLua下载:http://www.ulua.org/ VS2012/2013的用于编写Lua的插件:https://babelua.codeplex.com/或http://unknownworlds.com/decoda/ 在下载了uLua_vX.XX.zip后解压得到一个XXX.unitypackage文件,将该文件导入到我们的工程中即可使用uLua了. 我们先来一个最简单的示例: using UnityEngine; using System.Collections; using Lua…
相同的 lua 代码在安卓上能正常运行,但在 IOS 上可能不会正常运行而导致报红,崩溃等,我在使用 lua 编程时遇到的一些坑总结如下: 1. File.ReadAllText, 诸如以下代码在 ios 上会崩: local path="C:/1.txt"; local file=luanet.import_type("System.IO.File"); local text=file.ReadAllText(path); 正确写法如下: local path=&…
ulua插件下载地址 www.ulua.org,下面要说的是ulua的开发框架. 首先是 LuaLoader 类,它负责把一个 lua 的 table 加载起来,使此 lua 的 table 像一个 unity 的 component 一样挂在游戏对象上,代码如下: using LuaInterface; using System; using UnityEngine; public class LuaLoader : MonoBehaviour { public string Name; Lu…
项目使用ulua,我神烦这个东西.lua单纯在lua环境使用还好,一旦要跟外界交互,各种月经不调就来了.要记住贼多的细节,你才能稍微处理好.一个破栈,pop来push去,位置一会在-1,一会在-3,21世纪已经过去五分之一了好吗,谁乐意像汇编一样操作?那十几个操作函数,愣是比正则表达式规则还难记,用完就忘.我发现lua心智负担完全跟简洁搭不上边,贼他娘重,实现个面向对象都乱七八糟.我学c++都没觉得有什么不爽的,就lua代码各种不乐意看,各种小tips在那里,什么meta,weak,_G,逼着你…
不管是C++中还是在C#中,在都绕不开一个问题:类对象怎么在Lua中使用的问题,还好Lua提供了Userdata以及ligh Userdata结构类型,通过扩展可以处理这方面的问题.现在的很多框架也大致类似的方式进行处理. 在前面的一些笔记<Lua 与 C 交互之UserData(4)>中提到过几个使用宿主类对象中的问题: 数据内存 生命周期 数据操作 那篇文章中给出的案例是<Lua程序设计>中给出的教程,数据放在Lua中,由Lua来管理对象的内存数据,这种方式未必不好,需要优化的…
前言 IOS不能热更新,不是因为不能用反射,是因为System.Reflection.Assembly.Load 无法使用System.Reflection.Emit 无法使用System.CodeDom.Compiler 无法使用这三个不能用,就把传统dotnet动态路径坑死了为啥“这三个不能用,就把传统dotnet动态路径坑死了”呢动态载入dll或者cs的方法就这几个, IOS 下不能动态载入dll或者cs 文件,已经编译进去的没事.=============================…
热度 286052 2015-3-15 14:32 |个人分类:技术类| Lua Lua代码都是运行时才编译的,不运行的时候就如同一张图片.一段音频一样,都是文件:所以更新逻辑只需要更新脚本,不需要再编译,因而Lua能轻松实现“热更新”.Ulua是一款非常实用的unity插件,它能让unity支持Lua语言,而且运行效率还不错.下面就跟大家谈谈我用ulua的一些心得. Ulua的使用流程一般为: 实例化LuaState对象(new LuaState())è加载Lua代码(LuaState. Do…
前言 好久都没有写过文章了,现在正好在看有关unity3d的热更新方案,在网上找了很久,发现了ulua这个插件,感觉还是不错的,反正自己是个初学者,多了解一些知识应该是没有什么问题的.说起ulua,就不能不提及lua这个大名鼎鼎的脚本语言,这是一个很小巧的语言,并没有提供大多繁杂的功能,因为它并不是一个独立的语言,但是它可以很方便的嵌入到其它的程序语言中,实现可配置性和可扩展性.由于lua的优良特性,很多游戏都用它来做脚本,十分方便和精巧.有关lua的详细情况,大家可以去网上了解,资料很多. 这…
前言 今天是本系列的第六篇文章,也是最后一篇,我们来看看uLua中如何来实现协程吧.首先,让我们明确协程的概念.在百度百科上的是这样说的,协程更适合于用来实现彼此熟悉的程序组件,如合作式多任务,迭代器,无限列表和管道.这样看起来一定让你很混乱,其实我也不太明白这句话的意思.我的理解是协程就是一种用来处理并发任务的程序控制方式.举个例子,在我以前的守写过的三消游戏CandyCrush中,当我们点击相邻糖果进行交换时,如果交换过去没有可以消除的糖果,需要把糖果返回到原来的位置(点我查看详情),这个功…
前言 在我开始这个系列的第一篇文章中,我就提到了Lua脚本用来实现宿主脚本的配置性和扩展性.上节说到的调用外部Lua脚本就对应了它的两大特性之一的配置性,那么另一大特性如何来体现呢?这就要说我们今天的话题了:Lua函数.uLua插件是用来解决unity3d热更新的方案,在我们需要对宿主程序做一些局部逻辑上的修改时,Lua函数就变得至关重要.那么如何在uLua中来调用Lua函数呢,现在就来看看吧!我们将通过两个例子来了解如何调用Lua函数. 第一个例子 首先,这个例子的函数是非常简单的,所以我们就…
前言 在上节中,大概谈了一下如何在lua脚本中调用unity3d中的方法来创建游戏物体,这只是很小的一个方面,uLua的优势在于对unity3d中C#语言的扩展和定制.那么如何扩展和定制呢?其中的数据交互想必是重中之重.今天就来看一下,如何在unity3d的C#脚本中读取Lua脚本中的变量值吧! 相关代码 这是在NotePad++中展示的Lua脚本文件,我个人很喜欢NotePad++这个文本编辑器,以后我们的Lua脚本也是要在这个软件中编辑的,推荐给大家使用,比起记事本什么的要好用多了(点我查看…
前言 上节,刚刚说到创建一个“HelloWorld”程序,大家想必都对uLua有所了解了,现在我们一步步地深入学习.在有关uLua的介绍中(在这里),我们可以发现它使用的框架是Lua + LuaJIT + LuaInterface,其中Lua就是我们的主角,LuaJIT是采用C语言写的Lua的解释器,LuaInterface则用于实现Lua和CLR的混合编程.也就是说LuaJIT和LuaInterface提供对Lua脚本语言的支持.在今天我们要用到的功能来讲,我们先要来说说LuaInterfac…
ulua+PureMVC框架简单热更新使用 前言: 1:作者官网论坛 首先介绍的是这个框架是一位大牛  骏擎[CP]  jarjin   写的,据说原本是"非常多人不知道怎么使用Ulua,所以搞了个演示Demo",可是这个初衷发生了变化,突然有一个天作者发现非常多人基于这个Demo去做游戏了.这出乎作者的意料. 在此希望这个框架会越来越好. 眼下为止这个框架是全然免费的. 官网地址:http://www.ulua.org/ 近期刚刚开了一个论坛,大家不懂的能够去看看,论坛地址:http…
在聊ulua.tolua之前,我们先来看看Unity热更新相关知识. 什么是热更新 举例来说: 游戏上线后,玩家下载第一个版本(70M左右或者更大),在运营的过程中,如果需要更换UI显示,或者修改游戏的逻辑,这个时候,如果不使用热更新,就需要重新打包,然后让玩家重新下载(浪费流量和时间,体验不好). 热更新可以在不重新下载客户端的情况下,更新游戏的内容. 热更新一般应用在手机网游上. 为什么要用lua做热更新 其实C#本身的反射机制可以实现热更新,但是在ios平台上: System.Reflec…
LuaComponent可以支持配一个需要执行在这个gameObject上的lua脚本,并且每个gameObject上的lua都是一个实例 using UnityEngine; using LuaInterface; using System.Collections.Generic; //Lua组件 public class LuaComponent : MonoBehaviour { //lua环境,需要在使用前给其赋值 public static LuaState s_luaState; /…
unity窗口 lua -> Gen LuaWrap + Binder 生成Wrap文件 此类脚本是对Unity中常用的组件进行二次包装 Lua运行后 会把Wrap文件加载到Lua运行环境中 使得Lua调用Wrap文件 Wrap调用C#文件 间接的实现Lua调用C# Wrap文件可以实现Lua调用C# Wrap文件可以提高Lua执行效率…
前言 上节说到了Lua脚本与unity3d中C#脚本的数据交互,但是我感觉上节中的数理方式不太好,因为我们是把Lua脚本以字符串形式粘贴到C#脚本中的,如果读取配置数据都这样做的话,那就太可怕了.想想看,一个C#脚本中有一个长长的字符串,十分不方便,也非常混乱.那么有没有更好的处理方式呢?答案是肯定的.这节我们就来看看如何读取外部的Lua脚本吧,这样的话,Lua和C#就是完全分开的,便于维护和理解. 在宿主脚本中(C#中)的处理方式是确定的,主要是如何来获取外部的Lua脚本,以下会详细说明读取外…
当前Unity的代码更新方案基本都选择的ULua,而我们项目还需要考虑Web平台,ULua不支持WebGL,所以决定选择MoonSharp.MoonSharp(http://www.moonsharp.org/)是一个纯C#实现的Lua解释器,支持多种平台. 测试环境:Unity5.4 + WebGL + MoonSharp 1.6.0.0 测试代码: double MoonSharpFactorial() { string script = @" -- defines a factorial…
Lua 环境搭建 Windows 不用 visual studio 系统环境:Win7 64bit 联系方式:yexiaopeng1992@126.com 前言: 最近需要学习Unity3d游戏中的热更新技术,选择ULua方案,因此准备学习一些Lua的基础知识.之前在Ubuntu上曾经写过Lua版本的"HelloWorld", 但那时的环境搭建只需要下载源码,然后 make & make install 就可以了,但一到Windows下就完全不会做了.经过网络查找对比,得到目前…
一直以来对Lua热更新技术很感兴趣,在上周开始了对Lua的学习,主要学的是uLua. 直接上干货 准备工作: LuaInterface包括两个核心库一个是LuaInterface.dll,一个是Luanet.dll,我们可以通过LuaInterface完成Lua和C#(CLR)之间的互相调用 需要在vs的工程中导入两个dill分别是LuaInterface.dll和luanet.dll,前者是vs调用lua时需要引用,并在vs的工程中引入命名空间using LuaInterface;引用以后就可…
本篇主要解决的问题是使用lua脚本编写unity业务逻辑时,自动生成一些查找组件及绑定控件事件的lua代码! 现在很多unity项目都是用ulua作为热更新解决方案,因此需要用lua来写相关的逻辑,经常会用到的就是在lua中查找某个对象,尤其是写一些UI逻辑! 比如在Login界面中有登陆按钮.记住密码勾选框,在lua中获取这两个按钮可能的lua代码写法就是: a1 self.loginButton = self.gameObject.transform:findChild('loginRoot…
现在我们的游戏已到了开发后期,这个时候需要做新手引导这一块(恶心的新手引导,真想说游戏行业究竟哪个2B最先想出来要引导的???代码搞的到处都是,改了一次又改!) 吐槽过后进入正题:主要还是UI相关的操作,3D场景操作引导的东西比较少.这一块我们使用的是unilua来做这件事,因为我们还没考虑用完善的热更新方案(比如ulua)来做新手引导,所以使用unilua也能暂时满足需求. 具体的做法是:新手引导这一块属于一个单独的界面,其中的Panel层次是比较高的(高于被引导的所有其他界面),其中主要的包…