Page 1 of 1

内部でロードした際のリアルタイム表示について

Posted: 2019/01/25 09:19
by wendy
各キャラクターごとにArborFSMを設定し、Prefab化して、必要に応じてロードして使用しています。
その場合、実行時にArboaEditorウィンドウで、リアルタイムの挙動を見る方法はありますでしょうか?

Hierarchy上にオブジェクトが存在していて、それを使用している場合は、オブジェクトをクリックすれば挙動が表示されます。
publicな内部変数にFSMをロードしてPlay()で実行させた場合、動いてはいるのですが変数をクリックしても挙動を見れなくて困っております。

Re: 内部でロードした際のリアルタイム表示について

Posted: 2019/01/25 09:51
by caitsithware
状況が若干よくわからないのですが……

まず最初に、ArborFSMはGameObjectに追加して動作するので、一般的なGameObjectと同じようにPrefabを扱う必要があります。

例えば以下のような流れ
  1. ArborFSMをつけたGameObjectプレハブを、ResourcesやAssetBundleなどを利用してロード、あるいは直接プレハブを参照
  2. Instantiateしてシーンに配置
  3. Play()で実行。
この流れであれば、Hierarchyウィンドウにも配置したオブジェクトが表示されているはずなので、従来通りHierarchyから該当オブジェクトを選択すればArborEditorウィンドウで見れるようになります。
そもそも、もしこの流れに従っていなくシーンに配置できていなければGameObjectとしても正常に動作しません。

また、InstantiateしたあとでGameObjectにHideFlags.HideInHierarchyを設定した場合は、
Hierarchyに表示されなくなり選択できないため、自前でArborEditorウィンドウで開くエディタ拡張を書くことになります。

コード例

Code: Select all

if( GUILayout.Button("Open Editor") )
{
    ArborEditor.ArborEditorWindow.Open(グラフインスタンス);
}
上記のことがよくわからなかったり見当違いでしたら
もう少し詳細(できればGIFやスクリーンショット、コードなど)も教えていただけるとよりサポートしやすいです。

Re: 内部でロードした際のリアルタイム表示について

Posted: 2019/01/25 10:13
by Guest
現在下記のように使用しております。

private GameObject loadObject = /*AssetBundles.AssetBundleManager.LoadAssetAsync を利用して、オブジェクトを読み込み*/
public ArborFSM testFSM = loadObject.GetComponent<ArborFSM>();
testFSM.Play();

↑の状態で Inspector の testFSM をクリックしても、挙動が表示されないという状況です。

private GameObject loadObject = /*AssetBundles.AssetBundleManager.LoadAssetAsync を利用して、オブジェクトを読み込み*/
public GameObject instObj = Instantiate(loadObject);
public ArborFSM testFSM = instObj.GetComponent<ArborFSM>();
testFSM.Play();

↑の状態で Hierarchy の instObj をクリックすると、挙動が表示されます。
こちらの使用方法が正式ということなのですね。

Re: 内部でロードした際のリアルタイム表示について

Posted: 2019/01/25 10:17
by caitsithware
ゲスト wrote: 2019/01/25 10:13 private GameObject loadObject = /*AssetBundles.AssetBundleManager.LoadAssetAsync を利用して、オブジェクトを読み込み*/
public GameObject instObj = Instantiate(loadObject);
public ArborFSM testFSM = instObj.GetComponent<ArborFSM>();
testFSM.Play();

↑の状態で Hierarchy の instObj をクリックすると、挙動が表示されます。
こちらの使用方法が正式ということなのですね。
そうですね。
Arborに限らず、Unityでは「PrefabはInstantiateでシーンに配置して初めて正常に動作するもの」と覚えていただければ大丈夫です。