画像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>();
が後の行に来ていました。
・・・・・・
あ・・・
勘違いしていました。
これは、りんごが鳴っている間は、いくらバナナを見ても鳴らさない。
というコードが出来てしまっている。
そうじゃない。
りんごが鳴っているときでも、バナナを見たら
バナナが鳴って、りんごを止めないといけないんだった。
ちょっといろいろ触り直します。