需求
在游戏开发过程中,我们常常会进行自定义数据结构的声明,并且为了开发的方便,使关卡编辑人员可以低成本地参与关卡设计与编辑,需要在使用@property在编辑器实现自定义数据数组。
效果展示
-
假设有这个对话开发的需求 (图片来源于游戏恋爱养成游戏截图)
-
在编辑器上可以做个类似的效果,当然可能在对话较多的情况下,配置表更香,这里只是举个场景例子。 上图的效果可在对话处理的游戏中广泛使用。
实现步骤
- 定义自定义类,注意点
- 加入@ccclass("talkItem")注解
- 类不继承cc.Component,去掉 extend cc.Component
const { ccclass, property } = cc._decorator;
@ccclass("talkItem")
export default class talkItem {
@property({
displayName: "名字",
})
name: string = "";
@property({
displayName: "头像",
type: cc.SpriteFrame
})
avatar: cc.SpriteFrame = null;
@property({
displayName: "内容",
type: [cc.String]
})
content = [];
}
- 声明数组
const { ccclass, property } = cc._decorator;
import talkItem from "./talkItem"
@ccclass
export default class testTalk extends cc.Component {
@property({
displayName: "对话",
type: talkItem,
})
private talkRole: talkItem[] = [];
start() {
}
// update (dt) {}
}
小结
内容比较简单,但应用场景很多,也相信很多同学不会, 刚好今天有小伙伴来问怎么处理,羽毛就直接抽了一点时间给大家做一个简单的分享,写了这篇文章。
更多
长按二维码关注公众号"羽毛不会飞"回复"自定义数组"获取源码