请教自定义属性怎么访问

cc.Class({
    extends: cc.Component,

    properties: {
        backgroundAudio: {
            default: null,
            url: cc.AudioClip
        },
        p1: {
            default: null,
            type: cc.Node,
            positionX : 100,
            positionY : 100,
            isPositioned: true
        }
    },

    // use this for initialization
    onLoad: function () {
        cc.log(this.p1.positionX);  // undefined
    },
});

如上,上面用 this.p1.positionX 访问我自己定义的属性 positionX 的时候是 undefined,请大神们解惑。

通常不应该嵌套属性 如果想定制嵌套的属性
需要定义一个新的cc.Class
//P1.js
module.exports = cc.Class({
name: ‘p1’,
properties:{
target:cc.Node,
positionX:100,
positionY:100,
isPositioned:false
}
});

//test.js
cc.Class{(
extends:cc.Component,
properties:{
p1: require(“P1”)
}
)}

1赞

感谢解惑 :kissing_heart:

那比如我现在有多个类似的节点,每个节点都带几个自定义的属性,推荐方法应该怎么写。

业务逻辑是这样的: 我有多个位置,位置上用来放置棋子,我想给每个设置一个默认的位置和他是否被占用,及占用棋子的类型。然后当棋子移动到这个位置上时改变占用类型,当移除时改变是否被占用。
不知道思路是不是正确,求指导。

这样的话不建议用组件
相反应该用一个全局的棋盘管理
//gridMgr.js
let grid=[]
module.exports={
set: function(obj){
let key = obj.position.gridX+"#"+obj.position.y
grid[key] = obj
},
move:…
get:…
is:…
where:…
unset:…
}

// test.js. onLoad
let gridMgr= require(“gridMgr”)
gridMgr.set(obj)

可以说的详细点吗 :kissing_heart:

手机党。。

谢谢,我都追到 B 站去看视频了,哈哈
方便加下企鹅不 ODQ1NjQwNzQ3 ,老司机求带啊

为啥我这看到的是英文。。。我的企鹅601178894

Base64,防蜘蛛 [机智]

可以 贼强

额 更新一下 如果组件想要自定义嵌套属性只能是定义name属性的脚本 ,而不能是继承自cc.Component的组件