检测文件变化

上一篇讲在Lua文件变化的时候实现自动重载。有2种方式

一、assetpostprocessor

ssetPostProcessor是一个编辑器类,一个资源导入的一个管理器,在资源导入之前和之后可以根据导入的资源做一些设置和一些数据的修改,比如网格,纹理的压缩,模型添加组件等。当资源导入之前和之后都会发送通知,可以根据不同的资源类型,在导入之前和之后做不同的处理

Lua热重载

之前项目用Lua的模块很少,确实没关注是否在客户端部分实现热重载。因为项目的服务器开发是C++和Lua的组合,在配合处理开发的时候,服务器脚本实现热重载。在客户端使用Lua的模块越来越多,也有人更多的同事开始用Lua开发。为了提高开发效率,觉得还是可以花点时间在客户端实现下Lua热重载。

Lua的特点:基于寄存器的虚拟机,简洁的语法,高效的编译执行,容易嵌入的特性。Lua在国内互联网技术上的应用也占领不少市场,redis,openresty, skynet等等都能看到Lua忙碌的身影。

一、原理

函数requier在表中package.loaded中检查模块是否已被加载。
最简单粗暴的热更新就是将package.loaded[modelname]的值置为nil,强制重新加载:

1
2
3
4
function reload_module_obsolete(module_name)
package.loaded[module_name] = nil
require(module_name)
end

Lua的多重继承实现

之前讲过在Lua中实现面向对象,今天详细聊下多重继承

继承

可以重新定义从基类继承的任意方法。只需要编写一个新方法就行了。
Lua语言中的对象有一个有趣的特性,就是无须为了指定一种新行为而创建一个新类。

多重继承

1.多重继承之在多个类中查找一个字段

其实多重继承没什么特别的,除非两个将要被继承的类有相同的函数名和属性,否则,处理起来很简单。

Lua的metatable和Lua的面向对象实现

对于项目的Lua的内容进行梳理,有些设计只是使用,但没有明白为嘛这样写。《Lua程序设计(第四版)》再读了一次就豁然理解了。

lua的metatable,元表可以对2个表进行操作的函数

元表是面对对象领域中的受限类。像类一样,元表定义是实例的行为。不过,由于元表给出了预定义的操作集合的行为,所以元表比类更受限;同时,元表也不支持继承。lua语言中的每个值都可以有元素了。每个表和用户数据类型都具有了各自独立的元表,而其他类型的值则共享对应的类型所属的同一个元素。

个人最近踩的坑

6月份初稿,在6月-8月遇到的问题,总结反思.也是目前都已经解决掉的问题

一、半圆组件初始化显示异常

在用一个半圆组件。让item分布在恰当的位置显示,只有一个的时候居中,有2个时候在偏移30度的地方显示。但是打开界面第一次的时候,位置总是异常。
当时UE加组件的时候,并不清楚要这样。只是让2个角中一个显示就行了。后来UE告诉要程序控制一下组件。

《Lua程序设计(第四版)》读书笔记

Lua语言中的标识符(或名称)是有任意字母、数字和下划线组成的字符串(注意,不能以数字开头)

Lua语言中有8种基本类型:nil(空)、boolean(布尔)、number(数值)、string(字符串)、userdata(用户数据)、function(函数)、thread(线程)和table(表)。使用函数type可获取一个值对应的类型名称

最近的复盘-错误小结

最近线上测试,发现有2个C(概率复现,对玩家没什么影响)级BUG给到我,虽然一直也有出现,但没找到原因。因昨天打包电脑换工位,外面也刮风下雨。宅在家写点内容。小结下最近看到自己所犯的错误。

一、线上C级BUG

表现:可领取的特效没显示,显示上2/2,也没显示已经领取的打勾显示

Unity-Apk解包

在上海居住隔离的时候,整理了下为知笔记。发现了这篇于2018-06-07写完的,内容或许有陈旧

之前解过自己项目的包的代码,研究assetBundle打包的时候,像把bundle解压出来看。结合看来就一个包的逆向。

步骤

改名解压
  • 将”.apk”结尾的android包,改为”.rar”。可以等到以下几个文件
|