Page 1 of 1
他のオブジェクトの変数の参照
Posted: 2019/01/20 21:25
by Guest
初歩的な質問ですみません。
オブジェクトAにアタッチされたC#スクリプトのpublic変数をオブジェクトBのFSMから参照したいのですが、どのような方法がありますか?
例えばオブジェクトAのC#スクリプトにpublic int testInt;があり、Update()毎に内容が変化するとして、
オブジェクトBのFSM内でそのtestIntの内容によって挙動を変化させたいというようなケースです。
よろしくお願いします。
Re: 他のオブジェクトの変数の参照
Posted: 2019/01/20 23:36
by caitsithware
メンバー変数への参照方法についてですね。
主に以下のような流れで参照することになります。
- ArborFSMで使用できるスクリプト(StateBehaviourかCalculator)を自作しオブジェクトAに追加しているスクリプトのインスタンスを参照。
Code: Select all
public class ObjectBStateBehaviour : StateBehaviour
{
public ObjectABehaviour objectA; // ObjectABehaviour型のメンバー変数を宣言。
}
- インスタンスからメンバー変数の値を取得。
Code: Select all
public override void OnStateUpdate()
{
int testInt = objectA.testInt;
Debug.Log(testInt); // testIntの値をコンソールにデバッグ出力してみるテスト。
}
- 値を使ってステートを遷移するなどなど
Code: Select all
public StateLink nextState; // StateLink型のメンバー変数を宣言
public override void OnStateUpdate()
{
int testInt = objectA.testInt;
if( testInt >= 10 ) // testIntを比較してtrueなら遷移
{
Debug.Log("testIntが10以上なので遷移します : testInt " + testInt);
Transition(nextState);
}
}
- 例コード(ObjectABehaviour.cs)全文
Code: Select all
using UnityEngine;
public class ObjectABehaviour : MonoBehaviour
{
public int testInt = 0;
void Update ()
{
if (Input.GetKeyDown(KeyCode.Space)) // スペースキー押すたびに1増やすテスト
{
testInt++;
}
}
}
- 例コード(ObjectBStateBehaviour.cs)全文
Code: Select all
using UnityEngine;
using Arbor;
[AddComponentMenu("")]
public class ObjectBStateBehaviour : StateBehaviour
{
public ObjectABehaviour objectA; // ObjectABehaviour型のメンバー変数を宣言。
public StateLink nextState; // StateLink型のメンバー変数を宣言
public override void OnStateUpdate()
{
int testInt = objectA.testInt;
if (testInt >= 10) // testIntを比較してtrueなら遷移
{
Debug.Log("testIntが10以上なので遷移します : testInt " + testInt);
Transition(nextState); // 遷移
}
}
}
例として挙げたコードについては参考程度に、適宜、型名や処理内容は変えてください。
- ArborEditorウィンドウでFSMのステートに自作した挙動を追加。
- 追加した挙動のオブジェクトAインスタンスへの参照を設定。
- 遷移先などを設定。
- ObjectBFSM.png (43.47 KiB) Viewed 4902 times
Arbor独自の型やメソッド(今回の例ではStateBehaviourやOnStateUpdate、StateLinkやTransitionなど)以外は
UnityC#の基本的な書き方になりますので、一度UnityC#入門の書籍などで学ばれることをお勧めいたします。
Re: 他のオブジェクトの変数の参照
Posted: 2019/01/21 13:04
by Guest
とても分かりやすい解説で、なんとか理解できました。
狙い通りの挙動ができて感動しております。
ありがとうございました。