ランダム遷移コンポーネントの作り方について

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.
  • Please check Arbor Documentation and ask a question if you still don't know how to use it. If the desired function is not described in the document, it is highly possible that the function does not exist from the beginning, so go to the request forum.

ここは、Arbor開発者へ使い方に関する質問を行うフォーラムです。
注意点:
  • ユーザー様のプロジェクトの仕様上の問題や設計に対する質問には答えられません。
  • Unityの仕様上の問題に対する質問には答えられません。
  • Arbor Documentationを確認の上、それでも使い方がわからない場合にご質問ください。欲しい機能の記載がドキュメントにない場合は機能が元から存在しない可能性が高いので要望フォーラムへ。

Forum rules
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.
  • Please check Arbor Documentation and ask a question if you still don't know how to use it. If the desired function is not described in the document, it is highly possible that the function does not exist from the beginning, so go to the request forum.

ここは、Arbor開発者へ使い方に関する質問を行うフォーラムです。
注意点:
  • ユーザー様のプロジェクトの仕様上の問題や設計に対する質問には答えられません。
  • Unityの仕様上の問題に対する質問には答えられません。
  • Arbor Documentationを確認の上、それでも使い方がわからない場合にご質問ください。欲しい機能の記載がドキュメントにない場合は機能が元から存在しない可能性が高いので要望フォーラムへ。
YMMY-

ランダム遷移コンポーネントの作り方について

Post by YMMY- »

最近Arbor2が結構大きく取り上げられているようで嬉しく思いますが、こちらのスライドを見てひとつ気になったことがあります。

https://www.slideshare.net/Unite2017Tok ... y-75810280

これの26枚目にある、エディター上で任意数の分岐を作成し、それらに重みを付けたランダムな遷移ができるコンポーネントです。
使い始めのころ全く同じような機能のコンポーネントを作ろうとしたのですが、実行時になぜかnull参照エラーが発生してしまい、あきらめていました。
2つや3つ固定で重みを付けたランダム分岐はできたのですが……
これがあればとても便利になりますので、良かったらこれの作り方を教えて頂けないでしょうか。
よろしくお願い致します。
User avatar
caitsithware
管理人
Posts: 493
Joined: 2015/08/17 12:41

Re: ランダム遷移コンポーネントの作り方について

Post by caitsithware »

Arbor組み込みBehaviourとして追加すべきでしたね。
一度暫定版として作成してみますので少々お待ちください。

あと少々確認していただきたいのですが、
実行時にnull参照エラーが出たというのはUnityエディタ上でのプレイでしょうかそれともビルドした実機上でしょうか。
もしかすると潜在的な不具合の可能性もあるので、よろしければ問題の出たスクリプトが残っているなら見せていただけたり、具体的なエラーの発生個所や発生状況など教えていただけると検証に助かります。
User avatar
caitsithware
管理人
Posts: 493
Joined: 2015/08/17 12:41

Re: ランダム遷移コンポーネントの作り方について

Post by caitsithware »

暫定的にRandomTransitionを作成いたしました。
ArborRandomTransition.unitypackage
(9.59 KiB) Downloaded 336 times
こちらをダウンロードしてArborを使用しているプロジェクトにインポートしてください。

サンプルシーンは、ArborRandomTransition/Examples/Scenes/RandomTransitionです。
ランダムに遷移して別々のテキストを表示するサンプルとなっています。

使い方
ArborRandomTransition.png
ArborRandomTransition.png (21.25 KiB) Viewed 5345 times
  • 挙動追加から Transition > RandomTransition を選択して追加
  • LinksのSizeを遷移したい数を、各Weightに遷移の重み(多いほど遷移確立があがる)を設定。
  • Link[n]/Linkから遷移先ステートに接続
こちらで特に動作に問題ないようでしたら次回更新時に組み込みますので、
お手数おかけしますがご確認よろしくお願いいたします。
YMMY-

Re: ランダム遷移コンポーネントの作り方について

Post by YMMY- »

迅速なご対応ありがとうございます。
さっそく確認しましたところ、理想的な動きをしてくれました。
これで更に製作が捗ります。
caitsithware wrote: あと少々確認していただきたいのですが、
実行時にnull参照エラーが出たというのはUnityエディタ上でのプレイでしょうかそれともビルドした実機上でしょうか。
もしかすると潜在的な不具合の可能性もあるので、よろしければ問題の出たスクリプトが残っているなら見せていただけたり、具体的なエラーの発生個所や発生状況など教えていただけると検証に助かります。
こちらについては該当するスクリプトを削除していたようで、残念ながら残っていませんでした。
しかし、当時を思い出しながらそれらしきものを再現してみました。

Code: Select all

using UnityEngine;
using System.Collections;
using Arbor;
using System.Collections.Generic;

public class RandomTest : StateBehaviour {

    [SerializeField]
    private List<StateLink> LinkList = new List<StateLink>();

    // Use this for initialization
    void Start () {	
	}

	public override void OnStateBegin() {
        if (LinkList == null) return;

        int i = Random.Range(0, LinkList.Count);

        Transition(LinkList[i]);
    }
}
ウェイトはどう処理していたか忘れましたが、概ねこんな感じでStateLinkのListを用意してました。
これでエディター上で分岐先を増やし、各々繋いでもnull参照になっていました。
(ちなみにビルドの確認はしませんでした)
しかし今確認したところ、特に問題なく動作していました。
問題が発生していたのは一年近く前のバージョンのUnityとArbor2なので、当時はバグが潜んでいたがここまでのアップデートにより解消されたのかもしれません。

どちらにしても、今回作って頂いたものはウェイトまでエディター上で簡単に調整できますし、とても重宝すると思います。
本当にありがとうございました!
User avatar
caitsithware
管理人
Posts: 493
Joined: 2015/08/17 12:41

Re: ランダム遷移コンポーネントの作り方について

Post by caitsithware »

しかし今確認したところ、特に問題なく動作していました。
問題が発生していたのは一年近く前のバージョンのUnityとArbor2なので、当時はバグが潜んでいたがここまでのアップデートにより解消されたのかもしれません。
ご確認ありがとうございます。
とくに問題なさそうでよかったです。


Last bumped by Anonymous on 2018/02/23 06:24.
Post Reply