PUN 1.51で正式対応され、このエントリの修正は不要になりました!
Animatorの同期を行ってくれる便利なPhotonAnimatorViewですがUnity5ではEditor上での編集が無効化されており使えなくなっています( v1.50.3現在)。PhotonAnimatorView自体はUnity5でも動作しますので、今回はPhotonAnimatorViewEditorの方を編集してUnity4/Unity5の両方で使えるようにします。
以下、PhotonAnimatorViewEditorの書き換え方です。
##4~6行目
#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6
using UnityEditorInternal;
#endif
↓ #elseを追加し、その中でUnityEditor.AnimationsをUsingする。
#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6
using UnityEditorInternal;
#else
using UnityEditor.Animations;
#endif
##14~16行目
#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6
private AnimatorController m_Controller;
#endif
↓ if節を削除する
private AnimatorController m_Controller;
##59~61行目
#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6
this.m_Controller = AnimatorController.GetEffectiveAnimatorController(this.m_Animator);
#endif
↓ #elseを追加して、AnimatorControllerの初期化方法を記述する。
#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6
this.m_Controller = AnimatorController.GetEffectiveAnimatorController(this.m_Animator);
#else
this.m_Controller = m_Animator.runtimeAnimatorController as AnimatorController;
#endif
##115~129行目
#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6
if (this.m_Controller == null)
{
return 0;
}
return this.m_Controller.parameterCount;
#else
if( m_Animator == null )
{
return 0;
}
return m_Animator.parameters.Length;
#endif
↓ m_Animatorの部分を削除して、parametersの長さの取得方法をUnity4/5に対応した形で書き分ける。
if (this.m_Controller == null)
{
return 0;
}
#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6
return this.m_Controller.parameterCount;
#else
return this.m_Controller.parameters.Length;
#endif
#134~154行目
#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6
for (int i = 0; i < this.m_Controller.parameterCount; ++i)
{
if (this.m_Controller.GetParameter(i).name == name)
{
return true;
}
}
return false;
#else
for( int i = 0; i < m_Animator.parameters.Length; ++i )
{
if( m_Animator.parameters[ i ].name == name )
{
return true;
}
}
return false;
#endif
↓ m_Animatorの方を削除し、parameters要素のチェック方法をUnity4/5で書き分ける。
#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6
for (int i = 0; i < this.m_Controller.parameterCount; ++i)
{
if (this.m_Controller.GetParameter(i).name == name)
{
return true;
}
}
return false;
#else
return m_Controller.parameters.Any(t => t.name == name);
#endif
##196~200行目
#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6
parameter = this.m_Controller.GetParameter(i);
#else
parameter = m_Animator.parameters[ i ];
#endif
↓ #elseの中身を書き換える
#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6
parameter = this.m_Controller.GetParameter(i);
#else
parameter = this.m_Controller.parameters[i];
#endif
以上でUnity5でもPhotonAnimatorViewが使えるようになります。