UI Toolkit のバインディングシステムが実装レベルでどのように機能するかについて、以下に説明します。
Bind()
メソッドを呼び出すと、最初の値を非同期で同期し、追跡します。つまり、フィールドの value
プロパティがすぐに更新できないことを意味します。これにより、まだどの UI にも加えられていない階層にバインディングを設定することができます。
バインディングシステムは、Unity オブジェクトのシリアル化されたデータに依存して変更検知を実装します。
SerializedObject
と 1 つ以上の要素との間にバインディングを作成した後、システムはこのオブジェクトに変更がないか、毎フレームではありませんが一定の間隔でポーリングします。以下の 2 つのステップで行われます。
SerializedObject
をシリアル化しポーリングして、シリアル化されたバイトの変更を検出します。変更がない場合停止します。バインディング操作の中には、1 フレームで処理するには長すぎる場合があります。バインディング操作を 1 つのフレームで処理すると、UI が応答しなくなる場合があります。これを防ぐために、これらのバインディング操作はいくつかのフレームにまたがって行われることがあります。例えば、ポーリングされるオブジェクトの数によっては、変更を検出するのに数回の更新が必要になるかもしれません。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.