Events/InvokeMethodで呼び出せる関数の引数の制限について

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

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.

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

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.
ooee

Events/InvokeMethodで呼び出せる関数の引数の制限について

Post by ooee » 2020/09/20 07:38

いつもArborにはお世話になっています。
件名の内容で質問があるのですが、Events/InvokeMethodで呼び出せる関数の引数に何か制限はありますでしょうか?
といいますのも、InvokeMethodで関数を指定するのに引数の型の差異で選べるものと選べないものがあって
ドキュメントを見ても、その条件がのっていなかったもので。
手元で確認した限りでは、MonoBehaviourを継承していないクラスが引数にあると選べない感じでした。

お手数をおかけしますが、回答していただけると助かります。

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

Re: Events/InvokeMethodで呼び出せる関数の引数の制限について

Post by caitsithware » 2020/09/20 09:59

ドキュメントへの記載がなく申し訳ありません。

InvokeMethodで呼び出せるメソッドは、以下の条件で決まっています。
  1. 非publicは除外。
  2. 特殊名のメソッド(プロパティのget/setなど、内部的にメソッド扱いにされているもの)は除外。
  3. ジェネリックメソッドは除外。
  4. Arbor.Events.ShowEventAttributeがついていると強制許可。
  5. System.ObsoleteAttributeがついていると除外。
  6. Arbor.Events.HideEventAttributeがついていると除外。
  7. 引数がout以外かつ以下の型以外の場合は除外。
    • int
    • long
    • float
    • bool
    • string
    • Vector2
    • Vector3
    • Quaternion
    • Rect
    • Bounds
    • Color
    • GameObject
    • Componentから継承されたクラス
    • Objectから継承されたクラス(シーン外のアセット扱い)
    • enum型
  8. 上記判定で除外されなかったら許可。
開発当初の想定では、FlexibleFieldに対応していない引数のメソッドまで列挙してしまうと数が膨大になってしまうため、列挙する際の処理負荷などの関係から使用したいメソッドはArbor.Events.ShowEventAttributeを意図的に付けていただこうと考えていました。
(追記:例えばStartCoroutine(IEnumerator)などの、基本的にArbor上から呼び出さないであろうメソッドも大量に追加されるので設定しやすさの面でも引数で除外しておいた方が良いかという考えもありました)
その名残が残ったままになっていますので、引数に関する制限は再検討いたします。

ひとまず現状では、メソッド側にArbor.Events.ShowEventAttributeを追加していただくようお願いいたします。

ooee

Re: Events/InvokeMethodで呼び出せる関数の引数の制限について

Post by ooee » 2020/09/20 10:46

早速、回答いただきありがとうございます。

[ShowEvent]属性を追加したところ、一覧表示され実行もできるのを確認できました。
ありがとうございました。

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

Re: Events/InvokeMethodで呼び出せる関数の引数の制限について

Post by caitsithware » 2020/09/22 06:58

Arbor 3.7.3にてメソッドの引数チェック部分を廃止いたしましたのでご確認ください。
Arbor 3.7.3 リリース | Arbor 3

Post Reply