自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

随风吹笛

只要有自然,人就没有自暴自弃的理由——林清玄

  • 博客(137)
  • 资源 (2)
  • 收藏
  • 关注

转载 XLua框架搭建——玩转xLua的热补丁

关于热补丁这块,转载一篇xlua作者的文章,文章原链接玩转xLua的热补丁 xlua框架这块算是告一段落,如果有这方面的交流可以加QQ群:517539056xLua热补丁特性上线一年多,已经得到广泛的应用,其中不乏一些千万级DAU、亿级用户量的大游戏,反馈良好。然而同时也有些初接触的童鞋会有不少误区,这篇主要谈谈这些误区。误区规避了,自然容易玩转。误区1:我哪里预测得到哪些地方有bug,...

2018-06-04 20:11:27 2508 3

原创 XLua框架搭建——xLua常用库集成

官方文档里提供了一个集成第三方库的教程,对于日常开发,其实我们经常需要引入一些第三方库,如何加入到项目里,就需要参考这个文档了。一般来说,游戏开发需要用到的库就那么几个,对此,作者为我们集成了几个第三方库,这个集成独立于xlua,具体的见地址https://github.com/chexiongsheng/build_xlua_with_libs,作者集成了lua-protobuf(以前是pb...

2018-05-29 20:03:17 8225 1

原创 XLua框架搭建——lua性能分析

xlua代码里提供了一个性能分析的文档,里面提供了两个工具,一个是《函数调用时长分析工具》,一个是《内存泄漏定位工具》。关于这两个工具建议自己扩展,尤其是内存工具这块,扩展后可以做两个快照的比对,快速定位到哪个函数出现了问题。首先说下第一个工具,第一个工具用来分析时长,官方说明如下 api很简单,就三个,start和stop都是无参数,也很好理解,分别是统计开始以及结束。在star...

2018-05-21 20:32:34 4239

原创 XLua框架搭建——LuaFunction分部类扩展

Lua中函数在c#中的映射是LuaFunction,对函数的调用一般是用call来调用,但是官方认为这个效率上存在一定的GC,所以提供了Action和Func,其中Action是调用,没有返回值,而Func是有返回值的。在实际使用时发现少了一个函数,就是我调用的是无参函数,但是希望能拿到返回值,官方的代码里并没有相关函数,但是阅读代码可以发现,这是一个分部类,官方也鼓励我们自己扩建相关函数,看...

2018-05-15 20:32:52 2856

原创 XLua框架搭建——XLua API与try to dispose a LuaEnv with C# callback

在lua的设计中,有些是c语言与lua相互调用的方法,作为使用c#的unity,xlua也是用c#来进行编写,所以我们现在要使用c#代码来做这些事,xlua提供了相对应的方法,这些方法在LuaAPI类里。LuaAPI.lua_gettop();LuaAPI.xlua_getglobal();LuaAPI.xlua_pgettable();LuaAPI.lua_pushvalue();...

2018-05-10 20:05:55 5803

原创 XLua框架搭建——lua端改造c#现有类

在Lua端使用unity的一些类时会有一些比较大的性能消耗,比如我们常用的位置赋值操作transform.position = CS.UnityEngine.Vector3(0,1,0);如果进行性能测试会发现在性能消耗上需要十多毫秒,关于如何进行性能测试,可以参考官方文档《XLua性能分析工具》,后面也会有相关的文章。对于这个性能消耗,一个这么简单的操作,而且类似这样的赋值语句是一个...

2018-05-07 20:00:29 5278 2

原创 XLua框架搭建——lua协程实现

协程在unity中是一个很常用的方法,我们可以利用协程使代码看起来更连贯,易于理解。xlua在示例6中提供了一个协程的示例。local util = require 'xlua.util'local gameobject = CS.UnityEngine.GameObject('Coroutine_Runner')CS.UnityEngine.Object.DontDestroyOn...

2018-05-02 20:43:59 3988

原创 XLua框架搭建——print支持文件名和行号及日志双击重定向

xlua的代码里在使用的日志打印的时候会用print来进行,但是print仅仅是打印输入的数据,而没有对应的文件名信息和行号,如果文件比较多,日志也比较多的话,就会觉得很麻烦。lua提供了调试类debug,可以获取堆栈等信息,我们可以利用这个类来进行文件名和行号的获取,然后将文件名和行号一起传过去进行打印。设定一定的规范,然后利用前面的文章所讲的日志重定向,在控制台双击日志的时候进行自动打开文...

2018-04-25 20:28:30 2672

原创 XLua框架搭建——Lua定时器的实现

前面介绍了lua中update的实现,利用update,我们可以实现lua的定时器类。 与c#定时器原理一样,我们需要提供注册函数与反注册函数,然后利用update注册对应的update循环,在update循环里获取当前事件,然后遍历当前的注册列表,比较当前时间和定时器的注册时间,如果到了指定时间,就进行函数调用,同样,函数注册时需要传递自身self。 注册函数类似如下function...

2018-04-23 20:00:39 3937

原创 XLua框架搭建——Unity的Update循环

unity的生命周期中有一个Update函数,是游戏的循环,类似的还有FixedUpdate和LateUpdate等,在c#中继承monobehaviour后unity就会调用对应的函数,根据我们前面的设计《XLua框架搭建——LuaBehaviour设计》,我们也可以获取对应的update函数,然后进行调用,但是在lua中是mgr类的非生命周期下的类呢?无论是c#还是lua都会有这个问题,对...

2018-04-18 20:37:16 4432

原创 XLua框架搭建——lua 消息分发

消息分发对于模块解耦是一个很好的方案,前面的博客中介绍过如何在c#中写一个消息分发,以及消息分发的原理,有需要的可以去看原来的文章游戏脚本事件分发,同时在前面的lua后期接入笔记里也说过利用c#的消息分发来实现lua端的消息分发,见文章项目后期Lua接入笔记06–按钮事件监听及消息分发,但这是后期的时候,lua的使用不多,性能上的考虑也比较少,问题不是很大,现在搭建框架,需要大量使用lua,那么l...

2018-04-17 20:45:11 2413 2

原创 XLua框架搭建——lua oop类设计

面向对象编程是目前比较主流的做法,在lua中并没有类的概念,只有table,通过table的特性,我们可以自己构造一个类。关于这方面的资料比较多,就不在说明,不清楚的可以直接百度,这里提供一个云风大神的连接 在 Lua 中实现面向对象下面提供一个类的实现,仅供参考,不知道哪里来的了function class(classname, super) local superTy...

2018-04-17 20:13:12 2261 1

原创 XLua框架搭建——LuaBehaviour设计

由于Unity的生命周期问题,一般来说在Lua端都要实现相同的生命周期调用,以便和unity进行衔接。在官方第二个示例中,有个LuaBehaviour的脚本,演示了如何在lua中实现unity的生命周期,原理就是获取相关函数,然后在c#中被调用时调用对应的lua函数即可。一开始使用c#代码创建一个LuaTable,并设置__index指向全局。 LuaTable meta = lu...

2018-04-13 18:59:16 5800 1

原创 XLua框架搭建——类型导出与黑名单

经过前面的配置,应该可以正常跑Lua代码了,但是要想在lua中调用C#的代码,一般要生成相应的wrap文件,xlua通过打标签的方式来进行实现。官方建议不要在类里面打标签,而是统一到一个文件里,提供了示例代码ExampleGenConfig.cs,统一写在一个文件里,如果要配置同一个命名空间下的所有类进行导出,比如UGUI类,可以通过如下代码直接遍历取得[LuaCallCSharp]...

2018-04-11 20:08:30 7383

原创 XLua框架搭建——lua文件加载,签名及加密

XLua教程里面的第一步就是教大家如何去加载一个lua文件,官方推荐的做法是整个程序就一个DoString(“require ‘main’”),然后在main.lua加载其它脚本(类似lua脚本的命令行执行:lua main.lua)。对于实际项目,一般都是使用assetBundle来作为lua文件的载体,这个方式使用的是自定义Loader方式,利用自定义Loader,可以实现代码签名以及加密...

2018-04-08 19:57:54 5208 2

原创 XLua框架搭建——编辑器选择

xlua开源代码地址:https://github.com/Tencent/xLua新项目准备使用xlua来进行游戏开发,我进行这方面的技术研究及框架搭建。项目选择这套主要是因为对c#的热修复功能,xlua作为一套lua框架,其他lua框架能实现的功能理论上xlua都是能实现的。对于我们项目来说,规划是lua用来编写UI相关的业务逻辑,核心战斗这块还是使用c#来编写,如果到时候出了bug,也可...

2018-03-29 19:28:11 6484

原创 unity报错Assertion failed on expression

写编辑器时有时候会遇到类似于这样的报错,比如前面介绍的日志重定向,双击的时候就会出现这个错误。这个问题要解决先要定位到具体的代码,然后将这行代码延时执行,延时的时间是到编辑器GUI更新完后,unity中有对应的回调,把代码放到回调中执行即可。比如日志重定向对应的修改到如下:EditorApplication.delayCall = delegate(){ AssetDatabase.O...

2018-03-26 19:44:15 53827 7

转载 同时打开多个独立Excel窗口

为什么会有这样的问题,我也觉得纳闷,早期使用EXCEL还真没这要求,打开多个EXCEL表格,切换着看,一点都没什么问题,加上内部的“窗口排列”方式,满足了大多数需求~而今天,突然发现,我需要在两个显示器上,分别显示两个不同EXCEL表单,一个参看内容,一个操作录入数据。仅仅这个小需求,发现了小问题,表单仅在一个EXCEL窗口内显示,也就只能在一个显示器内显示,虽然桌面底部的任务栏里有两个EXC...

2018-03-22 19:47:27 23656 6

原创 UGUI事件透传

使用NGUI时有一个叫UIEventListener的脚本,对于添加一些事件可以很方便的做到,而UGUI并没有类似的脚本,基于项目需求及习惯,写了一个类似的脚本,但是实践中发现,在ScrollView中对Item添加这个脚本后会影响ScrollView的拖动,原因是EventListener里面接收了Drag事件,并拦截了下来,致使ScrollView得不到拖动事件以进行响应。问题出现并找到了...

2018-03-22 19:44:51 2206

原创 接入sdk覆盖AndroidManifest后提示ClassNotFoundException问题

项目接入了一个sdk,由于sdk需要添加新的权限,所以需要在AndroidManifest里添加相应的语句,由于是第一个需要修改AndroidManifest的sdk,项目里并没有对应的AndroidManifest文件,鉴于项目当前的配置,所以我先导出了一份eclipse工程,然后复制这份AndroidManifest到Plugin/Android目录下,添加好对应的权限后,重新打包运行,游戏直...

2018-02-26 17:17:56 794

原创 Live2D的简单使用

看了下Live2D,研究了下使用,再次简单的总结下,以便后来查看。 官方网站:http://www.live2d.com/en/ SDK:https://live2d.github.io/#unity导入后里面有个Samples文件夹,里面是官方示例,每个例子有Description,描述这个例子是做什么的。 Animation是动画的示例,使用的是Animator的方式做的。 Edi

2018-01-26 17:46:50 21936

原创 Lua中string.gmatch方法

下面的表列出了Lua支持的所有字符类:字符类:(character classes) . all characters %a letters %c control characters %d digits %l lower -case letters %p punctuation characters %s space characters %u upper-case letters

2017-12-29 10:04:42 19704

转载 ToLua源码分析:启动流程

ToLua源码解析启动流程

2017-11-25 15:30:57 2897

原创 Unity粒子特效的缩放与加(减)速

被人问到了这样一个问题:粒子特效如何加速?如何对它进行缩放?项目中没有遇到这样的需求,记得以前有这插件可以直接粒子进行缩放的,但是仅限于编辑器,现在要求运行时处理,那我们来看下粒子吧。 从编辑器中可以看到,粒子提供了一个缩放模式的属性,这个属性有三个枚举,shape,local,hierarchy,默认选项是shape,就是按网格来缩放,local是自身的缩放,只有更改自身的scale属性时可以进

2017-10-27 23:04:46 14518

原创 Unity控制台日志开启重定向

在Unity中,一般都会自己手动封装一次日志,或者自定义一些日志输出,比如lua代码的日志输出,双击开启时我们希望重新定向的其他的文件,而不是封装代码里,这里要用到的主要是[OnOpenAssetAttribute(0)],每次文件开启时,先执行自定义的代码,代码里自己重定向文件和行数,然后再选择开启。对于Unity控制台,我们还要用反射取得对应的日志内容。 直接上代码,使用时直接修改logCSN

2017-05-19 19:33:48 5252

转载 项目后期Lua接入笔记11--Lua代码优化2

文章转载自Unity3D游戏优化之Lua的内存,感谢原作者燃野 提供的好文章近段时间处理了一些Lua相关的性能和内存问题,分享记录下 1.lua内存增长很快,但gc可以降低的情况 一个小场景,角色站着不动内存就会稳定的增长,对比了unity profiler里的数据,没有特别显著的变化,但是lua内存增长了很多 执行lua gc后会大幅降低。说明是临时对象占用的内存,不gc释放不掉。也确

2017-04-18 19:16:53 1525

转载 项目后期Lua接入笔记10--Lua代码优化1

csdn的手机验证终于可以跳过了,不知道产品怎么想的,客服板块都要炸了。本文转自用好Lua+Unity,让性能飞起来——Lua与C#交互篇,感谢原作者提供的好文章从最早的Lua纯反射调用C#,以及云风团队尝试的纯C#实现的Lua虚拟机,一直发展到现在的各种Luajit+C#静态Lua导出方案,Lua+Unity才算达到了性能上实用的级别。但即使这样,实际使用中我们会发现,比起Cocos2dx时代Lu

2017-04-17 19:40:31 1070

原创 项目后期Lua接入笔记09--策划Excel转Lua

既然要使用lua做热更新,策划配表是绕不过去的问题,虽然c#也可以做到热更,毕竟配表就是纯数据,但是使用c#将数据解析到内存的时候,数据格式基本上是固定,几个字段就几个字段,字段类型就是那样了,不够灵活。 Excel转成lua网上有开源的项目,地址如下https://github.com/zhangqi-ulua/XlsxToLua/,感谢张奇给我们贡献的这个开源项目,里面有详细的使用说明,但是在

2017-04-07 20:07:27 1279

原创 项目后期Lua接入笔记08--Lua面向对象及LuaBehaviour的再设计

lua类创建和继承的关键是metatable的使用,这里直接使用云风大大的代码(部分修改)local _class={}function class(super) local class_type={} class_type.ctor=false class_type.super=super class_type.new=function(...)

2017-04-06 19:47:39 1716

原创 项目后期Lua接入笔记07--预制属性转lua代码

有些功能可能已经完成一部分了,或者lua中自己写find属性很麻烦,字符串很长,这里我们需要自己写一个工具来获取这些数据。 需要的功能就是预制体已经有c#并将属性拖入代码文件了,我们将对应的路径转成lua代码using System;using System.Collections;using System.Collections.Generic;using System.Reflectio

2017-03-31 20:39:34 826

原创 项目后期Lua接入笔记06--按钮事件监听及消息分发

按钮事件监听NGUI一般常用的是UIEvenetListener,使用方法一般如下UIEventListener.Get(gameObject).onClick = BtnClick;在Lua代码中使用方式也差不多UIEventListener.Get(gameObject).onClick = this.BtnClick;对于消息分发,Lua里面有一个Event实现了类似的功能,但是我们的需求不只

2017-03-30 20:31:58 3450

原创 项目后期Lua接入笔记05--网络协议protobuf在lua中的使用pbc

作为一个网络游戏,不可避免的要和服务端进行数据交互,在数据结构上protobuf是一个不错的方案,在lua中使用protobuf有多种方案可供选择,这里使用的是云风的pbc.先去这个网址下载生成工具http://repo1.maven.org/maven2/com/google/protobuf/protoc/,我这边下载的2.5版本。将protoc.exe放到指定的地方,然后将proto文件拷贝过

2017-03-29 19:57:31 7067 4

原创 项目后期Lua接入笔记04--宏定义处理HelloWorld

Lua和我们Unity游戏用的C#脚本语言有些不同,并不是编译型语言,虽然lua语言在真正执行以前,也会进行编译,这就意味着脚本里面并不支持c#里的宏定义形式,比如我们常用的平台判定UNITY_ANDROID或是自身定义的一些宏定义。我们需要自己手动构建一个类,并将它wrap,在lua里调用对应的函数。public static class LuaDefine{ public static

2017-03-28 20:29:11 4119

原创 项目后期Lua接入笔记03--LuaBehaviour设计

Unity是组件式开发,脚本继承自monobehaviour,然后挂在在gameobject上来驱动游戏,沿着这条思路,我们设计一个自己的behaviour来驱动lua脚本。using UnityEngine;using LuaInterface;public class LuaMono : MonoBehaviour{ public string ModualName; publ

2017-03-27 20:37:44 2374 1

原创 项目后期Lua接入笔记02--框架剥离

今天开始将lua框架接入项目,因为项目中已经有游戏框架了,所以我们只去框架里的Lua有关的东西。将 Assets\Plugins, Assets\LuaFramework\Editor\CustomSettings.cs, Assets\LuaFramework\Lua, Assets\LuaFramework\Scripts\Manager\LuaManager.cs Assets\Lu

2017-03-23 20:09:33 769

原创 项目后期Lua接入笔记01--框架及IDE

项目做到后期时,有一些要求行比较高的模块需要做到无bug,及时更新,这些模块一般是活动系统,充值系统等,但是后期接入的话要考虑现有c#的框架。今天开始记录一下遇到的一些坑。框架选择上,选的是tolua框架,主要是以前有过ulua的一些经验,相对来说熟悉度搞一些。当然也不是纯粹的插件框架,是基于插件框架的luaFramework,由于项目是使用的NGUI,所有对应的框架也是基于NGUI的,地址如下:h

2017-03-22 19:47:36 771

转载 监听脚本绑定事件与属性改变事件

本文转载自Unity3D研究院编辑器之监听脚本绑定事件与属性改变事件(十一),感谢原作者提供好文章在编辑模式下可能会用到, 比如我想做当绑定一个脚本后做点什么事情。。。 再比如我想当脚本序列化的数据发生改变做点什么事情等等。。举个典型的例子 比如有些脚本需要美术 或者策划挂在场景的模型上, 那么这些模型有很多没用的的组件 比较Animation 或者 Collider 如果在这里监听的话, 当他们挂

2017-03-15 10:02:36 1589

转载 Unity资源清理工具

Unity Global Support部门制作了一些实用的小工具免费供大家使用,前面已经分享过了处理资源的AssetGraph,今天继续为大家推荐用于批量清理资源的小工具:Asset Cleaner。 Unity Global Support部门主要负责对使用Unity引擎的企业级VIP客户提供技术支持,大中华区已实现全面覆盖,目前包括腾讯,网易,巨人,完美世界等公司已属于Unity的企业级VI

2016-12-12 20:52:18 2650 3

转载 mac下配置NDK开发环境

一、启动终端Terminal 二、输入 pico .bash_profile 回车。 三、输入以下内容【路径依实情而定】,注意路径最好不要有空格:export ANDROID_SDK_ROOT=/Users/apple/Desktop/adt-bundle/sdk export ANDROID_NDK_ROOT=/Users/apple/Documents/Android/android-n

2016-11-08 19:54:09 717

转载 Unity Mono脚本 加密

文章转载自 Unity Mono脚本 加密,感谢原作者提供好文章 个人是用虚拟机mac系统编译的mono,按照雨松大神的教程即可,转载这篇文章主要是讲解全面,可以解除很多困惑。加密环境 引擎版本:Unity3d 5.3.4 及更高版本 (使用Mono而并非IL2CPP) 操作系统:CentOS 6.2(Final) 加密环境:Android、iOS(暂定) 加密对象:C#源代码(dll文件

2016-11-08 19:48:21 1643

Unity着色器和屏幕特效开发秘籍 中文版完整

Unity着色器和屏幕特效开发秘籍 unity shaders effects cookbook 中文版 扫描版,章节完整,非高清,前三章的高清版本可查看我上传的其他资源 资源来自网络,请大家多支持正版

2015-10-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除