自定义属性相关问题
编程元件如何获取使用元件的自定义属性
- 解答:
使用自定义属性来获取控件方便更换信息且无需更改代码,方便将制作好的编程元件保存后跨地图使用。
自定义属性使用示例
功能说明:按下按钮屏幕显示信息
GameClient.lua
-- 获取当前脚本挂载的编程元件IDlocal SceneID = System:GetScriptParentID()-- 获取编程元件的自定义属性local button = CustomProperty:GetCustomProperty(SceneID,"按钮",CustomProperty.PROPERTY_TYPE.CustomUI)
--@description 游戏开始时客户端的操作function GameClient:OnStart() UI:RegisterClicked(childID,function() UI:ShowMessageTip("按下按钮") end)end这样处理以后如需更换控件,只需前往【编程元件】的自定义属性中添加名为”按钮”的界面控件属性,并选择对应的控件即可。

元梦扣叮的自定义属性API在编程元件中的替代
--在元梦扣叮中,存在一类设置自定义属性的API,包含:--设置对象自定义属性、删除对象自定义属性、清空对象自定义属性、是否存在自定义属性、获取对象自定义属性--因为在Lua中可以使用表(table)可以更快捷实现相同功能,因此我们不再提供自定义属性相关的API。--下面会举例说明,如何使用表,来实现自定义属性功能。
--下面设置了场景中实例id=385的立方体的分数score属性等于100local cube={ id=385, property={score=100,size=50}}--通过表的索引,可以直接获取score值,判断是否存在该属性if cube.property and cube.property.score then print("@@## cube score:"..tostring(cube.property.score)) --将score转为字符串,并日志打印结果,结果为 cube score:100end
--将score属性设置为nil,来删除这个属性cube.property.score=nilprint("@@## cube score:"..tostring(cube.property.score)) --再次日志打印看一下结果,结果为 cube score:nil
--清空全部属性的参考写法for k in pairs(cube.property) do cube.property[k] = nilendprint("@@## cube size:"..tostring(cube.property.size)) --属性size也被设置为nil了,因此日志打印 cube size:nil与上面代码对应的元梦扣叮示例: