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

ここは、Arbor開発者へ使い方に関する質問を行うフォーラムです。
注意点:
  • ユーザー様のプロジェクトの仕様上の問題や設計に対する質問には答えられません。
  • Unityの仕様上の問題に対する質問には答えられません。

Here is the forum to do the questions about how to use to Arbor developer.
Attention point:
  • We can not answer your questions about your project specific issues.
  • We can not answer your questions on Unity's specification issues.

Forum rules
注意点:
  • ユーザー様のプロジェクトの仕様上の問題や設計に対する質問には答えられません。
  • Unityの仕様上の問題に対する質問には答えられません。

Attention point:
  • We can not answer your questions about your project specific issues.
  • We can not answer your questions on Unity's specification issues.
wendy

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

Post by wendy » 2019/01/25 09:19

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

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

User avatar
caitsithware
管理人
Posts: 294
Joined: 2015/08/17 12:41

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

Post by caitsithware » 2019/01/25 09:51

状況が若干よくわからないのですが……

まず最初に、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やスクリーンショット、コードなど)も教えていただけるとよりサポートしやすいです。

Guest

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

Post by Guest » 2019/01/25 10:13

現在下記のように使用しております。

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 をクリックすると、挙動が表示されます。
こちらの使用方法が正式ということなのですね。

User avatar
caitsithware
管理人
Posts: 294
Joined: 2015/08/17 12:41

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

Post by caitsithware » 2019/01/25 10:17

ゲスト 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でシーンに配置して初めて正常に動作するもの」と覚えていただければ大丈夫です。

Post Reply