こんにちは、開発担当の杉原です。
唐突ですが、リニア鉄道館に行きたいなと思っておりまして。
ただ、名古屋市内に住んではいるものの、真逆の位置にあるので結構行くのがめんどくさいんですね。
車は地味に時間がかかるので、できれば公共交通機関を使いたいのですが、はたして子供がおとなしくしてくれるのか、そこが気になります。
さて、公共の場に傍若無人な子供をさらけ出すかは別としまして、今回は変数をさらけ出していきたいなと思う次第です。
(上手い枕を書こうとしてすべっている感じがすごい……)
前回は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円です。お楽しみに。
コメントをお書きください