画像2個、それぞれ見たら違う音が鳴る④ 二つのスクリプトで連絡を取り合うことに成功

なぜか、一つのスクリプトで二つのCubeを操作できるように

ならないと、という思いにかられていましたが、

 

二つのスクリプトでそれぞれのCubeを見て、音を鳴らすことが出来たので、

スクリプト同士で、お互いの状況を連絡し合うことが出来たら

良いのでは?と、思い調べました。

 

【Unity C#】他のスクリプトの変数を取得する - プログラミング教室 フタバゼミ (futabazemi.net)

 

こちらのサイト様にはいつも大変お世話になっております。

 

・・・

 

お互いの再生状況を連絡とり合うことに成功しました。

 

こんな感じのHierarchy

 

りんごを見ているので画面が赤くなっています。

 

 

 

バナナ側のスクリプトです。名前はplay2です。

 

private GameObject cu1Object;

play pl;

これはりんご側のことを書いています。

 

それから、

public AudioSource audioSource2;

にしました。

「audioSource」 のままだと、play(りんご側のスクリプト)と同じ名前なので。

 

結局使いませんでしたが、ichiziteishi も

名前がかぶっているので最後に2をつけて被らないようにしました。

 

 

下の方に、

こういう感じで書きました。

cu1Object = GameObject.Find("1Cu");

これは、オブジェクトの名前をそのまま1Cuと書いています。

 

pl = cu1Object .GetComponent<play>();

りんご側のスクリプトをplで表すと最初に書いていたので、

左辺はこんな感じになっています。

 

他にもいろいろやりましたが、全部うまく行ったら

また、全プログラムを乗せようと思います。

 

 

 

 バナナ側のスクリプトに、リンゴ側のaudioSourceが再生中かどうか

記述するコードを追記して、ちゃんと

 

再生中には「再生しています」

停止中には「停止しています」

 

と表示されました。

 

 

flgは「視線入力がtrueなら」

または

「マウスが押されたら」

文が表示されます。

 

 if (flg || Input.GetMouseButtonDown(0))

{

//////いろいろ書いてある////////

 

            if (!pl.audioSource.isPlaying)
            {
                Debug.Log("りんごオーディオソース停止しています");
            }
            else
            {

                Debug.Log("りんごオーディオソース再生しています");
            }
           

}

 

うまく行きました。

 

 

 

そこで、最初のifの中をこのようにしました

↑文字で打つと文字化けしたので画像です。

 

視線入力がtrue または マウスが押された

 

かつ

 

りんごのオーディオソースが鳴っていない

 

これはエラーが出ました。

なんでだろう?

 

・・・

単純なミスでした。

いろいろ触ってるうちに、先に書かないといけない

 

 cu1Object = GameObject.Find("1Cu");
 pl = cu1Object.GetComponent<play>();

 

が後の行に来ていました。

 

 

 

・・・・・・

 

あ・・・

 

勘違いしていました。

これは、りんごが鳴っている間は、いくらバナナを見ても鳴らさない。

というコードが出来てしまっている。

 

そうじゃない。

りんごが鳴っているときでも、バナナを見たら

バナナが鳴って、りんごを止めないといけないんだった。

 

ちょっといろいろ触り直します。