AnyPortrait > スクリプト > 初期化、基本設定
apPortraitでGameObjectを使用するときに呼び出される関数と、デフォルトで参照される関数を案内します。
最初の更新の直前に自動的に実行される初期化機能。
「Prefab」をロードしてリアルタイムで使用する場合は、 「Initialize()」または「AsyncInitialize()」関数を呼び出す必要があります。
大量のデータがある場合に実行時間が長くかかる関数。 「AsyncInitialize()」関数を使用することをお勧めします。
bool : 初期化中またはすでに終了している場合はfalseを返し、初期化が成功した場合はtrueを返します。
「Initialize()」と同じ機能を実行する初期化関数です。
「Prefab」がリアルタイムでロードされている場合は、「Initialize()」または「AsyncInitialize()」関数を呼び出す必要があります。
非同期処理を使用して、「Coroutine」を使用して実行時間の負荷を軽減します。
「Callback」イベントはパラメータとして受け取られ、終了時に呼び出されます。
ms単位の時間である「timePerYield」を引数として入れると、「Coroutine」の処理時間をタイマーで計算して、CPUにさらに負荷が少ないように動作します。
代わりに、この場合に、初期化時間が多少かかることがあります。
(「timePerYield」の処理時間をタイマーで計算して、CPUにさらにを利用した処理は、v1.1.7から適用されます。)
apPortrait.OnAsyncLinkCompleted onAsyncLinkCompleted : 初期化が完了したときに呼び出される「Callback」イベント
int timePerYield : 非同期処理時に「yield」が呼び出される制限時間(ms)
bool : 初期化中またはすでに終了している場合はfalseを返し、非同期初期化が開始された場合はtrueを返します。
「Root Unit」が表示されるように設定します。
「自動的に開始されたアニメーションクリップ」またはインデックスが0である「Root Unit」を使用して、「Root Unit」を対象としています。
他の「Root Unit」は、自動的に非表示になります。
apOptRootUnit targetOptRootUnit : レンダリングされる「Root Unit」
すべての「Root Unit」を非表示にします。
「Root Unit」が表示されるように設定します。
「自動的に開始されたアニメーションクリップ」またはインデックスが0である「Root Unit」を使用して、「Root Unit」を対象としています。
他の「Root Unit」は、自動的に非表示になります。
「ShowRootUnit()」と同じです。
すべての「Root Unit」を非表示にします。
「HideRootUnits()」と同じです。
「Important」プロパティを設定します。
「Important」プロパティがtrueの場合、このオブジェクトはフレームごとに更新されます。
「Important」属性がfalseの場合、指定されたFPSに従ってエディタが更新されます。
bool isImportant : 「Important」プロパティ
「Important」プロパティがオフの場合、キャラクターは固定FPSで実行されます。 (ゲームのFPSによっては、より少ないFPSで実行される場合があります。)
「Bake」で設定した固定FPSの値をスクリプトで変更できます。
int fps : キャラクターのアニメーション実行時に適用される固定FPS値。 「Important」属性がオフの場合のみ有効です。
要求されたインデックスの「Root Unit」を返します。
int rootUnitIndex : 「Root Unit」インデックス (デフォルトは0)
apOptRootUnit : 索引に対応する「Root Unit」。 そうでない場合はnullを返します。
現在再生されている「Root Unit」を返します。
apOptRootUnit : 現在再生されている「Root Unit」ない場合はnull戻り
現在再生されている「Root Unit」のインデックスを返します。
int : 現在再生されている「Root Unit」のインデックス。ない場合は-1戻り
クリッピングマスクが適用されたメッシュがある場合、自動的に1つのカメラでレンダリングを行います。
この関数を呼び出すと、現在のカメラに関連付けられている情報が削除され、初期化されます。
再レンダリングすると、自動的に再リンクを試みます。
クリッピングマスクを使用してメッシュのすべてまたは一部をカメラに再リンクします。
引数に応じて、カメラを保持して「Render Texture」のみを再作成することもできます。
bool isOnlyActiveRootUnit : trueを入力すると、現在の「Root Unit」のみがリセットされます。 falseの場合、 「Root Unit」全体を対象とします。
apOptRootUnit targetOptRootUnit : リセットされる「Root Unit」
bool isRegistToCamera : trueの場合、カメラと再リンクします。 falseの場合は、 「Render Texure」を再作成し、次のフレームを待ちます。
GameObjectsがレンダリングされる順序を計算するときに使用される「Sorting Layer」を設定します。
レンダリングの順序は同じ層にゲームオブジェクトをグループ化して計算されます。
「Sorting Layer」は、「Unity」の「Project Settings > Tags and Layers」で構成することができます。
設定されていない名前を入力すると、処理が失敗し、エラーメッセージが表示されます。
もし、いくつかの「apOptTransform」の「Sorting Layer」のみを変更しようとする場合には、
そのオブジェクトを直接指定するか、オブジェクトの名前を引数として入力します。
string sortingLayerName : 設定する「Sorting Layer」の名
apOptTransform optTransform : 「Sorting Layer」を変更しようとする対象
string transformName : 「Sorting Layer」を変更しようとする「optTransformの名前」
int rootUnitIndex : 「Sorting Layer」を変更しようとする「optTransform」が所属する「Root Unitのインデックス」
「GameObject」が表示される順序を計算するときに使用される「Sorting Order」を設定します。
同じ「Sorting Layer」に大きな値を持つ「GameObject」が画面の前に表示されます。
もし、いくつかの「apOptTransform」の「Sorting Order」のみを変更しようとする場合には、
そのオブジェクトを直接指定するか、オブジェクトの名前を引数として入力します。
int sortingOrder : レンダリングオーダー。 大きな値は画面の前に表示されます。
apOptTransform optTransform : 「Sorting Order」を変更しようとする対象
string transformName : 「Sorting Order」を変更しようとする「optTransformの名前」
int rootUnitIndex : 「Sorting Order」を変更しようとする「optTransform」が所属する「Root Unitのインデックス」
現在適用されている「Sorting Layer」の名前を返します。
「Sorting Layer」の名前は、「Project Settings > Tags and Layers」に登録する必要があります。
この関数が呼び出されるたびにプロジェクトの設定を照会するため、この関数を頻繁に呼び出すことはお勧めしません。
string : 適用された「Sorting Layer」の名前。 プロジェクト設定と一致しないソートレイヤー値がある場合は、「Unknown Layer」を返します。
現在適用されている「Sorting Order」値を返します。
この値が大きいほど、画面の前面がより多くレンダリングされます。
int : 現在の描画順序。
特定の「apOptTransform」の現在の「Sorting Order」値を返します。
この値が大きいほど前のレンダリングされます。
apOptTransform optTransform : 照会しようとする対象
int : 現在のレンダリングのソート順です。
apPortraitのSorting Order Optionが「Depth To Order」または「Reverse Depth To Order」である場合に使用される関数です。
DepthによってメッシュのSorting Order値が自動的に変更されるかどうかを決定します。
スクリプトでSorting Orderを制御しようとする場合には、Sorting Orderが自動的に変更されることを防がなければならなのでFalseを入力する必要があります。
基本的にはTrueです。
bool isEnabled : trueの場合、Sorting Orderが自動的に変更されます。
シーンに存在するカメラを自動的に認識するように設定しつつ、同時に、現在のカメラを確認してレンダリング方式を再決定します。
この関数が呼び出されなくても、基本的にシーンのカメラをリアルタイムで認識するように設定されています
キャラクターをレンダリングする直接カメラを指定することができます。
この関数が呼び出された以降、「FindRenderingCamerasAutomatically」関数が呼び出されるまで、自動的にシーンに存在するカメラをチェックしません。
params Camera[] cameras : 1つまたは複数のカメラを指定します。
int : 実際にキャラクターをレンダリングすることができるカメラの数です。
アニメや制御パラメータの値を対象キャラクターに同期をします。
この関数を呼び出すと、そのキャラクターは対象キャラクターに依存して更新されます。
この関数を使用する例を次のページで見ることができます。
- 他のキャラクターとの同期
- ボーンを同期してコスチュームを変更
apPortrait targetPortrait : 同期対象となるapPortraitです。
bool syncAnimation : アニメーションを同期するかどうかです。
bool syncControlParam : 制御パラメータを同期させるかどうかです。
bool syncRootUnit : 「ルートユニット(Root Unit)」を同期するかどうかです。同期されるapPortraitの「ルートユニット」の個数が2個以上で同じです。アニメーションが同期されると、この要求は無視されます。
bool syncBones : ボーンの動きを同期させるかどうかです。
SYNC_BONE_OPTION syncBoneOption : ボーンの動きを同期させることは、どのような方法で同期するかを選択することができます。「MatchFromRoot」を入力すると、ルートボーンからの構造が同一でなければならず、「MatchFromSubBones」を入力すると、同期されるキャラクターのルートボーンが対象キャラクターのルートボーンがなくても、同期がされます。syncBonesがfalseであれば、このオプションは無視されるので、任意の値を入力します。
bool : 同期処理の結果です。同期対象が有効でないか、すでに同期されているなどの処理が失敗した場合はfalseを返します。
Synchronize関数で設定された同期をオフにします。
キャラクターが更新されると、Unityのいくつかの時間の値を使用するかを決定します。
このオプションに応じて、ゲーム倍速に影響を受けるかどうかを設定することができ、また、別の倍速を設定することができます。
Mecanimを使用している場合は適用されません。
この関数を使った例は、関連ページでご覧いただけます。
bool useUnscaleDeltaTime : この値がtrueの場合Unityの「Time.unscaledDeltaTime」によって更新され、falseの場合「Time.deltaTime」によって更新されます。(デフォルトはfalseです。)
float multiplier : アップデート倍速を設定することができます。入力しない場合は、デフォルトの1倍速に設定されます。
キャラクターが更新されると、コールバック関数を使用して再生速度を制御できます。
Mecanimを使用している場合は適用されません。
この関数を使った例は、関連ページでご覧いただけます。
OnDeltaTimeRequested onDeltaTimeRequested : 現在のフレームの時間を返すコールバック関数です。 ユーザーは直接更新時間を変更できます。 コールバック関数の形式は「float OnDeltaTimeRequested(object savedObject)"」です。
object savedObject : コールバック関数が実行されるとき、どのオブジェクトが関数を呼び出したかを区別するなどの目的で使用できる値です。 型に制限はなく、nullも可能です。
FPSオプションに応じて、一定の時間間隔でメッシュを更新するように設定します。
このオプションの説明は、「関連ページ」にあります。
int fps : メッシュが更新される頻度(FPS単位)。 最大30 FPSの値を入力できます。
bool isSyncUpdate : メッシュ更新タイミングが同じオプションを持つ他のキャラクターと同期するかどうか。
public class PrefabTest : MonoBehaviour
{
void Start () { }
void Update ()
{
if(Input.GetKeyUp(KeyCode.P))
{
GameObject swordGirl = Resources.Load<GameObject>("TestPrefab/SwordGirl");
swordGirl = Instantiate<GameObject>(swordGirl);
apPortrait swordGirlPortrait = swordGirl.GetComponent<apPortrait>();
swordGirlPortrait.transform.parent = this.transform;
swordGirlPortrait.transform.localPosition = Vector3.zero;
swordGirlPortrait.AsyncInitialize(OnPortraitLoadAsync);
}
}
void OnPortraitLoadAsync(apPortrait portrait)
{
portrait.Play("Idle");
}
}