ぺんたんがゲーム開発やアプリ開発、最近の気になる話題、特にスマホやIT関連について語る場所

ぺんごや

Unity Unity初心者 Unity基礎

【Unity】スクリプトを他のスクリプトから参照する方法

更新日:

imac風のデスクトップPC
例えば「GameMain.cs」というスクリプトファイルがあったとして、これを他のスクリプトから参照したい場合、あると思います。

Unityでの実現方法をご紹介します。

ダメな例

GameMain gm = new GameMain();

素直にやってみる。
コンパイルエラーにもならないし一見良さそうだけど以下の警告が出ます。

You are trying to create a MonoBehaviour using the ‘new’ keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all

UnityEngine.MonoBehaviour:.ctor()

 

どういった内容なのかというとこんな感じ。

「Unityで使っている『MonoBehaviour』はnewでインスタンス化するんじゃねーぞ。ヒエラルキーウィンドウでゲームオブジェクト作って、そこにスクリプトをアタッチしろ。そんでそのゲームオブジェクトを参照して使え!」

スポンサードサーチ

実現方法

Unityに怒られてしまったので言われるとおりに直してあげましょう。

まずはヒエラルキーウィンドウで「空のオブジェクトを作成」します。今回は「GameMain」という名前にしました。

 

作成した「GameMain」オブジェクトのインスペクターに、参照したいスクリプト「GameMain.cs」をドラッグ&ドロップしアタッチします。

 

最後にGameMain.csを使いたいスクリプトに以下を書けばおっけーです。

GameObject go = GameObject.Find(“GameMain”);
gm = go.GetComponent();

やってる内容は、「GameMain」オブジェクトをFindで探し出して、探し出したオブジェクトにアタッチされている「GameMain.cs」を参照しています。

 

これでGameMain.csに書かれているpublicな変数や関数を利用することができます。

以上!

-Unity, Unity初心者, Unity基礎

Copyright© ぺんごや , 2019 All Rights Reserved Powered by STINGER.