unity强力配置插件-Luban使用(三)多态


前言

我们通常使用oop思想应对各种千奇百怪的需求,一般的配表只能使用单一的方式配置技能、ai等再让开发再次解析数据。luban不仅能实现list、map的多层嵌套,也能直接使用继承的方式快速实现类的多层嵌套,还使用限定类型来实现多态(不同类型使用同一接口),十分方便。


一、定义方式

1、excel方式定义
分别定义项目需要的父类、子类,指定子类的父类。限定列格式
在这里插入图片描述
在这里插入图片描述

2、xml方式定义
官方示例

<bean name="Shape">
 <bean name="Circle">
  <var name="radius" type="float"/>
 </bean>
 <bean name="Rectangle" alias="长方形">
  <var name="width" type="float"/>
  <var name="height" type="float"/>
 </bean>
 <bean name="Curve">
  <bean name="Line" alias="直线">
   <var name="param_a" type="float"/>
   <var name="param_b" type="float"/>
  </bean>
  <bean name="Parabola" alias="抛物线">
   <var name="param_a" type="float"/>
   <var name="param_b" type="float"/>
  </bean>
 </bean>
</bean>

二、导出规则

并非所有定义的类型都会生成代码,必须满足以下规则之一:
被导出的table直接或者间接引用的类型。
root.xml 的 service的 ref项指定的类型。

如果没有引用想要导出,打开LuBan\Config\Defines目录下的root.xml文件如下进行添加ref项:

<root>

	<topmodule name="cfg"/>

	<patch name="cn"/>
	<patch name="en"/>

	<group name="c" default="1"/> client
	<group name="s" default="1"/> server
	<group name="e" default="1"/> editor
	
	<import name="."/>
	
	<importexcel name="__tables__.xlsx" type="table"/> 相对data目录
	<importexcel name="__enums__.xlsx" type="enum"/>相对data目录
	<importexcel name="__beans__.xlsx" type="bean"/>相对data目录

	<service name="server" manager="Tables" group="s"/>
	<service name="client" manager="Tables" group="c"/>
	<service name="all" manager="Tables" group="c,s,e">
	<ref name = "platformData.Data"/>
	<ref name = "platformData.NormalData"/>
	<ref name = "platformData.GimData"/>
	</service>
</root>

三、结果

可以看出key-value的形式,利用$type限定类型来指定不同的子类,比传统的type+string[]要好很多。
在这里插入图片描述
在这里插入图片描述


总结

记录luban的多态使用。

猜你喜欢

转载自blog.csdn.net/qq_41912124/article/details/130489669
今日推荐