Dungeon Mizarka 012

今天一样是要利用Editor Script进行少部份量化的工作,已经了解了怎麽样用Editor Script产生ItemDefinition,接下来就要将道具加到ItemCollection,也就是Inventory元件里最主要的资料。

初步的试验是Inventory和ItemCollection多数行为都不是开放的,如果直接利用

var itemCollection = new ItemCollection();
var inventory = go.AddComponent<Inventory>();
inventory.AddItemCollection(itemCollection);

有很多问题会产生,首先就是inventory内部的item collection list没有初始化,引用Add时就会出错,而ItemCollection就算是产生了,也无法调整其Purpose。整体来看,没有办法利用全数从零产生的方式进行。只能试着利用很迂回的方式,先产生Prefab,引用後再调整。

愈往下愈感受到不调整(修改UIS)程序码,很难往下进行。开发者遵循着良好的Coding Guideline进行撰写,对於从程序码端着手了解其用法本来是很赞赏的,但问题是良好的Coding Guideline在没有开放足够的API下,很难让其它开发者进行量化处理。

比方说MonoBehaviour里面可以开放出来在Inspector调整的值,都是用Serialable加上protected(private),这点似乎是很好的Coding Guideline,但是仔细想想这不是很奇怪地一件事。在Code中用了non public,主要就不希望开放这个值出来让其它人引用到,可是Serialable,就可以在Inspector进行调整。这里最吊诡的地方在於,防止这个值被其它Code引用,却又可以开放出来让可以操控Inspector的人进行调整。那这里的意义何在?只是做了一个机制可以被UI调整,不能被Code调整?难不成用Inspector调值的人比写程序调值的人更加专业、更加可以信赖?

实际上这些会用Serialable加上protected(private)的开发者,应该很少进行量化批次作业。正常开发的周期,只有前几个GameObject会手动在Inspector里进行调整。等到确定行为、流程後,多数都是要进行读表格产生的动作,也就是要利用Editor Script进行产生的动作。若是行为的设定只被弄成操作Inspector的UI才能进行,那真的是让整个批次作业的难度大幅上升。

就拿UIS里ItemObjectSlot这个型别为例子

[Tooltip("The transform that will be the parent of the spawned item object.")]
[SerializeField] protected Transform m_Transform;

不过就是一个定位置用的值,弄成SerializeField protected看起来很遵守软件工程学的Coding Guideline,麻烦的是又没有开放Set API,根本就是为难用外挂的开发者。

还再试着要怎麽样调整,也在Discord里给予开发者反馈,但时差的关系,等到开发者看到,可能也是好一阵子之後的事了,看样子今天要试出这个部份可能性不大。或许再多花些时间了解eye of beholder系列作和其它的FPDC,发想设计,又或是思考怪物单体部份要怎麽进行设计。

怪物设计

怪物也会有装备的概念,不论是否为人形怪,都可以进行装备。这样的装备只是为了要让怪物的基本数质可以有差异化,毕竟怪物的等级数值设定并不是一时三刻可以完成的,可能在这个月当中都不会有太多的着墨,趁着道具系统进入,利用装备可进行小幅度的能力调整也是不错的。

如果没有更好的想法,现阶段就会直接采用这样的方案。若是怪物身上有装备,就会有额外的图像资讯显示。让玩家可以直接看到有装备的怪物和没有装备的怪物的差异性,如图中显示的(用Unity Cube做大小定位)

实际上,也和多数游戏的Buff, Debuff呈现概念相当,看起来并不会太突兀。

追加二只後排在一起看比例。

由於怪物是直接拿取免费的图样,大小没有辧法做统一,只能够依照拿到的美术资料进行调整。直接利用pixel per unit的方式进行尺寸调整。这三只怪,青蛙、食人花和石巨人,比例上青蛙约为0.5公尺,食人花为1.5公尺再高一些,而石巨人则超过2公尺的高度。之後若是有其它的怪物进来,也比照此方式进行比例调整。

怪物或许会如同玩家一般,可以选择其行动。为了要展现其行动的时间点,故用同样的行动条进行呈现,让玩家可以了解怪物正要展开行动,并决定如何应对。然是否有此显示需求,还要再进行评估。

怪物的实际呈现和其相关资讯就暂定成这样,接下来就要进行实际的制作,可能又要花上不少时间了。


<<:  Day24 javascript计时-2

>>:  D-21 委派 ? delegate ? Action ? Linq

【从零开始的 C 语言笔记】第二十七篇-变数的生命周期(2)

上一篇我们介绍了什麽是变数的生命周期,也介绍了区域变数、全域变数是什麽,希望大家有比较弄清楚了! ...

将Word(Excel)内容汇出成SVG

因为前阵子发表的研讨会文章被转期刊,所以这几天都在忙着重写文章,遇到一个大家都觉得很烦排版的问题,这...

Day10:例外处理,留下来或我跟你走

程序在执行的时候,有些时候我们会遇到一些例外的情况,我们一般会使用 try-catch 来拦截程序执...

D-4.Line_pay_api 串接(一)

Line pay API 算是金流类API比较好串接的,尤其是V2,对单一商品或服务开启(课金,抖内...

Day10 建造App(4)

我们前三天已经完成建构一个完整APP的90%了,而我们今天要解决的问题是,要怎麽让我们的Django...