【饥荒随笔】类与界面

本文探讨了《饥荒》游戏如何采用面向对象编程,特别是类的继承和界面设计。核心在于class文件,利用lua元表实现继承。Widget和Screen文件夹分别对应界面类,它们都继承自widget基类。通过TheFrontEnd:ShowScreen()展示界面,TheFrontEnd:ClearScreens()清除界面以优化内存。主要参考gamelogic.lua和mainfunction.lua。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

饥荒采用面向对象的编程范型,其核心是class 文件,利用lua元表,实现类的继承。

在饥荒里有着千奇百怪的类,动物是类,界面是类,连地图也是类,看饥荒的源码,主要把握各个类之间的继承与关系,弄清楚在什么时候需要用到哪一个类,这个变量试试哪个类的实例,它继承了类的哪些方法,又有什么属性可以调用。

        

         Widget和screen 两个文件夹是关于界面的,每个文件其实都定义了一个类,它们都有着共同的一个基类——widget,定义在widget/widget.lua 里。

         而screen 继承了widget,两种文件结构基本相同。

         继承了screen 的子类,会在其它的文件或其它的screen里被调用,我不可能一个个讲,我讲一些典型的,剩下的以此类推过去吧。

 

 

用TheFrontEnd:ShowScreen(ScreenClass(…)) 可以在游戏上显示一个界面,具体层次由各个文件决定。

 我们饥荒在无安装任何mod时,第一个载入的界面是mainscreen  而 当我们有安装mod或者代码出现错误时,会显示scripterrorscreen   。

 

 注:并不是所有的错误都会显示错误界面,而是代码错误不“危害全局”时才显示错误,不然会直接闪退或者显示某某内存不能读写,如果出现这种情况,原因也就那三四个,等以后整理一下发出来。

 

额,扯远了(其实我还想再扯一下的),用

TheFrontEnd:ClearScre

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值