下载 App

【聚光灯-苞米烧烤】开发者日志06 | 苞米单例

修改于2024/10/2765 浏览开发者日志
本篇由主程老师Ocean撰写,主要探讨单例设计模式——懒人的Lazy单例类,希望对各位游戏开发者和爱好者也有所启发。
horizontal linehorizontal line
单例设计模式似乎是一种……偷懒的解决方式。这玩意儿核心逻辑是,一个类只有一个实例,所有访问这个类的操作本质都在访问这一个成员。个人感觉有一些全局变量的意思了。
那这玩意儿……比全局变量好么?我是绝对它可能在一些别的软件开发中未必提倡,但是游戏开发情景下还真的挺好用的。
比如说,我需要全局追踪玩家的数据,或者是玩家的进度,或者是用来访问常驻资源等等。从某种程度上说,单例设计模式有点“利用面向对象开发模式但是面向过程”。
那,废话不多说,懒人的单例类是要说啥呢。主要是微软.NET里的Lazy<T>。这玩意儿提供了线程安全,简单实用的单例解决思路。具体的原理我也没深挖,反正好用。
TapTap
(看到那39个引用,说明我有多懒了)
如果我需要某个类是单例类,直接继承,完事了。比如这样:
TapTap
然后音频相关的全都用这个就好了
但是这样做有一个问题,是单例的脚本没法作为MonoBehavior挂到物体上,咋整。其实上面的截图已经提示了我的解决方案,有点蠢,但是好用。我先创建一个单例B,我再创建一个Mono叫做A,在B里创建一个A的引用,然后在A的初始化(根据需求选择Awake()/OnEnable()/Start())里面调用B,将A的引用赋值一下,然后该干啥干啥就好了。
TapTap
蠢但好用的解决方案
这么做还带来了一个更有趣的效果,如果我想,我可以让这个引用在不同场景中引用不同的是实例。有啥大用么,未必,但是对测试调试来说绝对是方便了不少。比如说场景切换器,就不需要一直从第一个场景带到后面了。
不过啊,如果我们研究一下单例模式,会发现其实有点不太符合面向对象原则……但是吧,它还是好用的。
horizontal linehorizontal line
苞米即将出炉!敬请期待——!
【聚光灯-苞米烧烤】开发者日志08 | 游戏里真的有苞米!截图
【聚光灯-苞米烧烤】开发者日志08 | 游戏里真的有苞米!
出于对苞米的狂热喜爱,制作组决定在游戏中加入隐藏的苞米彩蛋—— 喜欢找隐藏的朋友们有福了(bushi) 总之——现已在四个关卡中设置了隐藏苞米,等游戏正式上线的时候仔细找找叭qwq 有发现的朋友也可以截图发在下方评论区分享哦 以下是四个隐藏苞米的剪影和编号,在游戏中每个苞米都有自己的有趣文本,等你来发现! 27号了27号了好急好急好急—— #聚光灯gamejam开发者日志 #TapTap聚光灯独立
官方
9 赞
【聚光灯-苞米烧烤】开发者日志09 | 苞米新鲜出炉!截图
【聚光灯-苞米烧烤】开发者日志09 | 苞米新鲜出炉!
终于——赶着上传了第一版的包,感谢所有成员的付出!!我们的苞米(Lighter)新鲜出炉啦——! 是怀旧电子风格的平台跳跃解谜游戏,详情见游戏资料—— 走过路过的各位30号都来玩玩叭,届时记得点赞关注评论哦,感谢!!!qwq 本次参加聚光灯gamejam的Demo版本共有五个章节,总计25个关卡,预计游戏时长15~30min,欢迎品尝! #聚光灯gamejam开发者日志 #TapTap聚光灯独立游
官方
15 赞
1 回复
《Lighter》补充说明:键位图截图
《Lighter》补充说明:键位图
由于最后赶工期间遗漏部分图标未更改,这里放一下键位图作为补充说明。 PC端:(试玩版本中方向键左右或上下均可用于调节明度) 移动端:(按跳跃键或将左摇杆上拉均可跳跃,每次上拉起跳一次,跟PC的空格键类似,触发时间延长可以跳的更高) 感谢试玩!欢迎评论留言反馈~ qwq #TapTap聚光灯独立游戏 #聚光灯
官方
11 赞
1 回复
00:22
【聚光灯-苞米烧烤】开发者日志07 | 苞米抢先看截图
【聚光灯-苞米烧烤】开发者日志07 | 苞米抢先看
本篇日志直接展示录屏叭——苞米的实际运行效果展示(并非苞米x) 顺便补充一句,我们的苞米(游戏)现已正式命名为“Lighter”!qwq (ps.本关卡并未完整呈现所有游戏机制,仅作为提前展示,游戏详情以正式上线版本为准) (发出迫不及待分享苞米的声音(然而视频没有声音)) 总之——敬请期待!!! #聚光灯gamejam开发者日志 #TapTap聚光灯独立游戏 #聚光灯
官方
8 赞
1 回复