HDS#21 public変数

こんにちは、開発担当の杉原です。

 

 

唐突ですが、リニア鉄道館に行きたいなと思っておりまして。

ただ、名古屋市内に住んではいるものの、真逆の位置にあるので結構行くのがめんどくさいんですね。

車は地味に時間がかかるので、できれば公共交通機関を使いたいのですが、はたして子供がおとなしくしてくれるのか、そこが気になります。

 

さて、公共の場に傍若無人な子供をさらけ出すかは別としまして、今回は変数をさらけ出していきたいなと思う次第です。

(上手い枕を書こうとしてすべっている感じがすごい……)

前回はC#において同一スクリプトのVisual間で変数を共有する方法についてご紹介しました。

ただ、その時の方法では同じスクリプトを参照するVisual同士でしか共有ができません。そこでこれを、ほかのスクリプトを参照するVisualとも共有できるようにしてみます。

 

まずは下図のように2つのVisualを配置します。

球体(Sphere)で定義された変数を三角柱(Wedge)から参照したいと思います。

そこで、下記のように変数testを実装します。

// C#向けの内容なのでここは省略
// C#タブを選択してください。

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using Demo3D.Native;
using Demo3D.Visuals;

[Auto] public class Sphere : NativeObject {
    public static int test = 0;

    public Sphere(Visual sender) : base(sender) {}
    
    [Auto] void OnReset(Visual sender) {
        test = test + 1;
        print("Sphere.test:" + test);
    }
}

前回との違いは1点、変数を定義する際にpublic句を付けるだけです。

これによって、変数testはほかのクラスからも参照できるようになります。

 

では早速この値をWedgeからも使ってみたいと思います。

と、ここでコードを書く前にやっておくことが1つあります。

実はそのままではWedgeクラスからはSphereの存在を知ることができないのです。そこで、Wedgeクラスに対してSphereクラスへの参照設定を行い、その存在を教えてあげる必要があります。

 

参照設定は対象のスクリプト(Wedge)を開いて、そのスクリプトウィンドウの上部にある[File]をクリックし、[Refercences]をクリックしすることで表示されるReference Managerウィンドウで行います。

そしてウィンドウ左側の[Scripts]を選択した後、[Add Existing]ボタンを押下します。

参照したいのはSphereなので、表示されたウィンドウでこれを選択して[OK]ボタンをクリックすると以下のように項目が追加されます。

これでWedgeのスクリプトからSphereクラスにアクセスできるようになります。

 

あとは以下のようにWedgeクラスの処理を書けば……

// C#向けの内容なのでここは省略
// C#タブを選択してください。

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using Demo3D.Native;
using Demo3D.Visuals;

[Auto] public class Wedge : NativeObject {
    public Wedge(Visual sender) : base(sender) {}
    
    [Auto] void OnReset(Visual sender) {
        Sphere.test = Sphere.test + 1;
        print("Sphere.test:" + Sphere.test);
    }
}

こんな感じで、値を共有できるようになりました。


 

次回からはテコ入れ指示があったので、「週刊ラジコンを作る」的なコーナーを始めてみようと思います。

更新は10/4(木)、創刊号は特別価格0円です。お楽しみに。