-
XLua 源码学习(三)
前面两篇文章已经分析了Lua调用C#中对象的实现方式。接下来将要分析的是XLua中最重要的功能:“热更”。毕竟Lua调用C#对象已经有各种版本的实现了。让C#代码支持热更的流程 Generate Code 这一步主要根据是根据C#类中需要支持热更的方法生成其对应的委托方法,但是并不是每个方法对应一个委托,而是根据调用参数和返回参数公用委托。 Hotfix Inject 这一步主要是对Unity编译出的Dll中的C#类添加判断条件,以此来选择调用Lua中的修复方法还是直接执行C#代码...…
-
XLua 源码学习(二)
在XLua源码学习(一)中讲的主要是Lua对C#静态类的调用方法,本次将会讲到的是对对象方法的调用。注意看代码中的注释,精华都在注释中。类的静态字段方法实现在XLua中对类的静态字段属性方法调用都是归属于对cls_table的映射操作。在生成适配代码的模式中,XLua将一个类的静态方法名都作为一个key存储在cls_table中,而对应的值是一个委托,这个委托将会调用到C#中对应的字段或者方法上,并且这个委托都是会在XLua的GenWrap代码阶段生成。但是在反射模式中XLua也是将一...…
-
XLua 源码学习(一)
现在工作中经常用到XLua修复Bug或者使用Lua作为逻辑脚本,是时候学习一下源码看看如何实现这些方法的了。那么XLua中是如何在Lua代码中调用Unity中的C#方法的呢?Lua调用C#方法CS.UnityEngine.Debug.Log('hello world')CS是一个全局的Table,所以CS.UnityEngine可以当做是在一个名为CS的Table表中查询名为UnityEngine的值。获取其值是通过CS的元方法__index来实现的。其逻辑代码在创建LuaEnv时候调用下...…
-
Mono中的BOEHM GC 原理学习(1)
现在工作主要是游戏方面,游戏开发就必然绕不开游戏引擎,自己使用的是Unity的引擎,Unity引擎使用可以使用的语言也有多种,本人使用C# 而且跑在Mono-Runtime 上。Mono和Unity的关系不在赘述,本文默认你有C#的编写基础,跨平台语言基础。什么是GC GC 全称 Garbage Collection。也叫垃圾回收。在我们写C#或是Java代码时候我们并不关心一个对象在内存中的创建和释放,我们只是通过一个关键词new 来实例化出一个对象来,至于在内存中是如何被分配是不关心...…
-
HashMap实现原理
虽然在工作中经常用到HashMap,LinkedList之类的集合,但是对其真正的实现原理等都没有做过多的深入追究.所以趁这段时间有空就进行了深入的学习和记录. HashMap的特点是什么? HashMap的实现原理 Equals()和hashCode()的都有什么作用? HashMap中的Hash如何设计 HashMap是什么?HashMap是一个哈希的Map,有一个Entry数组,和若干链表(JDK 8后还包括红黑树)组成HashMap的大概原理HashM...…
-
在Unity游戏中使用Live2D
将进酒君不见,黄河之水天上来,奔流到海不复回。君不见,高堂明镜悲白发,朝如青丝暮成雪。人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。烹羊宰牛且为乐,会须一饮三百杯。岑夫子,丹丘生,将进酒,杯莫停。与君歌一曲,请君为我倾耳听。钟鼓馔玉不足贵,但愿长醉不复醒。古来圣贤皆寂寞,惟有饮者留其名。陈王昔时宴平乐,斗酒十千恣欢谑。主人何为言少钱,径须沽取对君酌。五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。什么是Live2D Live2D是日本Cybernoids公司开发。 ...…
-
Jenkins中的iOS打包任务设计
Jenkins持续集成Unity游戏项目Jenkins的安装部署和配置Jenkins中的Android打包任务设计Jenkins中的iOS打包任务设计Jenkins中的测试任务设计iOS打包需要的流程整个打包流程与Android打包是类似的。难点主要集中在插入必要的FrameWork,修改Plist在Unity5.x上Unity官方已经帮我们提供了一套API用来对Xcode工程的处理。并且提供了[PostProcessBuild]这个标签来完成插入工作。在Unity4.x上使用这套API可...…
-
Jenkins中的Android打包任务设计
Jenkins持续集成Unity游戏项目Jenkins的安装部署和配置Jenkins中的Android打包任务设计Jenkins中的iOS打包任务设计Jenkins中的测试任务设计实现界面Unity项目的结构Untiy代码管理中分支是上线的版本,所以主要以它为版本进行分析。Unity导出时候分三个版本,官网,第三方,腾讯。以宏来控制版本,和脚本删除不需要的脚本由于使用的是Jenkins全部是命令行出包,Unity打包脚本如下static void ExportGYTProject_Onli...…
-
Jenkins的安装部署和配置
Jenkins持续集成Unity游戏项目Jenkins的安装部署和配置Jenkins中的Android打包任务设计Jenkins中的iOS打包任务设计Jenkins中的测试任务设计Jenkins的下载Jenkins可以点击链接跳转下载。推荐下载Jenkins的war包,然后再自己的服务器上安装Tomact然后直接上传war包然后来部署Jenkins。用这个办法是为了避免直接使用例如windows的exe安装包安装之后是无法修改Jenkins的主目录,它默认是存储在你的C盘下。像我现在的工作...…
-
Jenkins持续集成Unity游戏项目支持多渠道多地区版
Jenkins持续集成Unity游戏项目Jenkins的安装部署和配置Jenkins中的Android打包任务设计Jenkins中的iOS打包任务设计Jenkins中的测试任务设计项目需求:Unity的游戏项目 区分大陆,台服,等不同服。大陆Android区分多渠道需要接入不同SDK和支付等。目前打包:Unity开发组完成开发后–》打出分支–》导出Unity的ios和android原生工程包–》原生项目进行各种调节并接入渠道SDK进行打包–》针对不同项目进行签名–》内部QA测试–》加固程序...…