モーリーのメモ

アプリ開発等(プログラミング、CG作成)、興味を持ったことを実践してまとめるブログです。

モーリーのメモ

スクリプトのPropertiesについて:Cocos Creator

 まだ理解が浅いので、解釈など間違っているかもしれませんが、確認した内容を書きます。
 今回は、スクリプトのPropertiesについて。

使用環境

 私が使用している環境です。

属性値のgetter/setter

 属性値にgetter/setterを設定できます。

設定例:『_(アンダースコア)』に注意

 Radiusという属性値を作って、getter/setterを設定した例です。
 getter/setter内では、属性値の先頭に『_(アンダースコア)』を付けます。
 付け忘れると暴走(無限ループ)します。

    properties: {
	    Radius: { // 半径
	        get: function() {
	            return this._Radius;
	        },
	        set: function (value) {
	            this._Radius = value;
	            this.RadiusSq = Math.pow(value, 2); // 2乗して代入
	        },
	    },
	    RadiusSq: 0, // 半径の2乗
    },

上記のコードで定義して、下記のように値を代入すると

    onLoad: function () { // ノードのロード時に実行
        this.Radius = 10;
        cc.log("this.Radius = " + this.Radius);
        cc.log("this.RadiusSq = " + this.RadiusSq);
    },
|<<
下記のように出力されます。
>|javascript|
this.Radius = 10
this.RadiusSq = 100

捕捉

『_(アンダースコア)』の有無を逆に出来ます。

 属性値の名前の先頭に『_(アンダースコア)』をつけた場合は、逆にgetter/setter内では『_(アンダースコア)』を外します。

    properties: {
	    _Radius: { // 半径
	        get: function() {
	            return this.Radius;
	        },
	        set: function (value) {
	            this.Radius = value;
	            this.RadiusSq = Math.pow(value, 2); // 2乗して代入
	        },
	    },
	    RadiusSq: 0, // 半径の2乗
    },
getterだけ設定出来ます。

 getterだけの場合は、Read onlyになります。

getter/setterとdefaultは同時に使えません。

 同時に書くと、getter/setterが無視されます。
 コンソールにエラーメッセージが表示されますが、実行されます。

getter/setterを設定した属性値は『Properties』パネルに表示されません。

 getter/setterを設定した属性値は、『visible: false,』にしていなくても表示されません。

属性値の先頭に『_(アンダースコア)』=『visible: false,』

 属性値の名前の先頭に『_(アンダースコア)』を付けると、デフォルトで『visible: false,』となります。

あとがき

 属性値の名前の先頭に『_(アンダースコア)』を付けるとパネルに非表示になるのは、自分で発見した!っと思ったら思い切りマニュアルに書かれていました。