- 博客(14)
- 收藏
- 关注
原创 Xlua实践项目总结
美术资源、数据资源、以及GameObject相关游戏对象资源需要预先在Unity中准备好。然后在lua中调用Csharp以及Unity的api进行开发调用。对于面向对象的需求编写一个实现了封装继承多态的表,使用这个表”派生“一个子类来模拟实现。API大体使用的都是CSharp,而语法要遵从lua语言。bug2:在lua调用第三方json序列化插件时,要注意进行序列化的文本不能包含非法字符,尤其是下划线 _ ,并且对编码格式尤为敏感。bug1:重复对一个变量进行了两次require赋值。
2026-04-03 21:20:21
26
原创 xlua框架学习记录:-----文件读取
AssetBundle不支持打包一个lua脚本,因为在AssetBundle中没有定义相关的资源文件,与之相近的只有TextAsset,因此我们需要先进行.txt后缀的封装,封装为一个文本文件。那么在调用lua的语法require试图读取lua脚本时,会从LuaENV编译器的属性customerLoaderss中遍历读取器方法,customerLoaders为一个读取器类的列表。默认的载入器默认从Resources文件夹下读取,并且只能读取.txt后缀的文件,.lua后缀的文件发生了报错。
2026-03-21 16:26:22
324
原创 Lua面向对象的代码实现及其细节
由于__newindex的特性,所以在方法内的self.side=self.side+1在garbage进行了操作。可以观察到通过调用base调用父类方法,父类字段side的修改被保存了。其中garbage用于作为一个垃圾表,拦截对实例化对象的方法的重写。其他ai入deepseek以及qwen被问到都开始左右脑互搏了。__newindex实现实例化对象的重写方法拦截,若将26行的代码注释,则会正常运行。__index实现继承链嵌套。base字段的调用细节。
2026-03-19 17:26:43
37
2
原创 LUA学习记录----面向对象
通过一个表table编写一个父类,,该父类内部的所有方法都通过:冒号将自身传入,同时在表中自实现new实例化方法,在实例化方法中,将父类对象关联为实例化出的类对象的元表,并且将元表的__index指向父类本身。若想要在重写子类方法时保留父类方法,则可以在继承时给子类定义一个父类属性base,需要调用父类方法时,通过调用base属性调用父类的未被重写的方法。注意点:通过base调用时本质上是将父类表本身作为参数传入到方法中,会导致子类调用父类的方法时,参数被更改。以此实现不同派生类的同意方法有不同的表达。
2026-03-18 18:14:04
392
原创 lua学习记录----元表
_index 当表table索引查找不到某一个元素时,会调用元表的__index索引键,如果_index的值是一个表,则会在这个表中查找目标元素,如果_index是一个函数,则会调用_index函数,默认传入的参数时table和目标key.__newindex,当给表中一个不存在的元素进行赋值时,会将键值对的赋值在元表的__newindex所指的表中操作,与index同理,father中的__index只是一个普通的键而son是father的元表,son中的__index则是father的元表的元方法,
2026-03-17 17:27:07
40
原创 lua学习记录
当协程被coroutine.yield挂起时,在外部调用coroutine.resuem函数并在resume方法中传入参数即可在通过yield方法给协程内部返回值。lua当中,允许逻辑运算符左右为非true、false的表达式,即逻辑运算符左右可以以变量参与运算,并且,只有nil、false才会判定为假,其余变量都为真。主要的不同点是, Unity的协程的恢复操作是由Unity来控制, 只是给大家提供了一些预设的行为和提供自定义行为的接口。而Lua由于没有主循环, 协程的恢复需要在主线程中手动恢复。
2026-03-15 19:20:19
219
原创 lua学习记录---table表
而ENV则是一个给当前环境、代码块默认添加的一个“当前局部变量”的限制,以将当前环境隔开,默认的当前环境即当前脚本,因此在不对_G、ENV进行任何操作的情况下,_G与ENV指向的都是当前环境的总表。迭代器:指用来被for语句循环调用的函数,该函数用来遍历table中的元素,一般需要参数table以及一个初始的索引值/键,返回对应的值,以及下一个键。而_ENV则是给所以代码块都添加上了一个上值域的一个保险,即一个全局变量本质上都是保存在一个名为_ENV的大型“局部变量”当中,函数、模块也同理。
2026-03-14 19:07:17
344
原创 Lua学习记录
由于lua中没有函数的类型(统一为function),也没有参数的类型,因此可见lua中不支持函数的重载,即同一个函数不同参数或参数个数不同。lua当中没有自增自减即: a--,a++,也没有符合运算符即:a+=1,a-=1,在lua当中关系运算符不等为~=,并不是c#当中的!当一个函数有多个返回值时,默认使用第一个进行赋值,若要使用多个返回值,则使用多个参数进行返回值的承接。lua当中的参数允许不声明类型也允许参数数量超过所需参数个数,超过数量的参数会被丢弃或者补空。lua当中共有8中数据结构,分为。
2026-03-12 20:03:39
231
原创 数据结构----List列表、比较方法Comparison与CompareTo、IComparable与IComparer接口与排序。
该接口实现的方法int CompareTo(T other),会作为默认sort()的比较规则,对列表进行排序,即在调用Sort方法且未传入任何比较器(IComparer或者Comparison)时会调用的比较器。Capacity为当前列表所占用的容量大小,一般为2的次方个,因此会有容量溢出的情况,可以通过调用列表方法TrimExcess()将容量大小删减至元素数量的大小。List<T>的默认Sort方法则会调用T类的IComparable接口实现的方法CompareTo(T other),
2025-12-24 15:00:15
1069
原创 Unity学习记录---事件与委托
根据需要调用的方法A,定义该方法类型的返回值、参数的委托,实例化委托d后将方法A传给d。下图定义了一个无参数无返回值的委托类型,实例化的委托对象f1获得testFun的方法体。对于不同返回值,不同参数的方法,可以客制化定义不同类型的委托来装载不同的方法。在定义该事件A的脚本内部通过?委托对象装载的方法体可以是静态方法、实例化类对象的方法、也可以是匿名方法以及lambda表达式构成的匿名方法。而委托作为一个委托对象,不论在外部获取还是内部获取,都可以任意调用、增删该委托的方法体。委托的调用以及委托的参数?
2025-12-16 18:37:55
316
原创 Unity 协程学习记录
游戏进程运行需要时间,因此游戏内运行过的时间与显示时间是并不一致,因此,虽然现实中过了两秒,但是由于游戏内有大量逻辑需要执行,因此此时游戏内可能只过了1秒,,而由于协程段前后需要执行的逻辑可能不同,导致前后运行时间不同,导致执行到debug出当前时间的语句的时间间隔是不一致的,最后偏差下,使得第一步与第二步之间看似相差了2s,此时若将打印的系统时间更换成,time.deltaTime,则时间间隔会更接近1s(但是依然不是1s整,因为逻辑执行导致的时间损耗始终存在)Reset方法则是重新遍历该迭代器方法。
2025-12-12 04:01:28
602
1
原创 Unity学习记录
以上都是实时光,烘焙光则是将光照射到物体的材质上后,物理模拟光照效果并生成一张光照后的贴图附加到材质上。othersettings当中的fog为雾效果,默认为不够选状态density为雾强度,会根据摄像机与场景的距离随之模拟雾的效果。不会随着物理距离而影响光照效果,效果类似于环境光,但是这个光是单向的,因此会产生一个固定方向的阴影。会根据距离而影响光照效果,可以设置一张贴图实现给光投影出特定的形状。程序化生成,不需要任何贴图,单单对该天空盒材质球的属性进行编辑来实现不同天空盒的效果。类似于一个灯泡的效果。
2025-12-09 20:06:56
364
原创 记录在unity项目中接入android第三方sdk时遇到的问题
自行下载gradle版本将unity默认路径下的gradle进行替换,路径在perference external tool中,但是依然发生这个报错。大意就是使用的android gradle pluginis版本为7.4.2,这个版本最高兼容的compilesdk为33,但是androidstudio内使用的compilesdk版本为36.所以发生了兼容性报错。只能说用androidstudio对unity项目进行第三方sdk的导入真是相当折磨,代码编写5分钟,版本配置两小时,真是一场酣畅淋漓的赤石啊。
2025-11-12 14:57:54
646
原创 记录创建unity调用第三方sdk时遇到的问题
alias(libs.plugins.android.library) apply false后,便可以顺利进行同步。插入unity项目后进行androidapi的调用即可, 打包成apk后根据接入的第三方sdk所需要的权限一一打开。遂问deepseek,得知缺少在libs.version.toml对library进行配置。alias(libs.plugins.android.application)更改为。在创建完android交互项目时,对build.gradle的plugins内的。
2025-11-08 21:32:31
452
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅