質問:
この質問は、Game Framework 公式グループ (216332935)、Liuyiからの質問です。
タイムラインは UnityEditor を参照します。TimeArea は内部タイプです
Timeline が配置されているコードには正常にアクセスできますが、独自に拡張されたエディター クラスにはアクセスできません
この記事は以下を参照しています。
https://blog.csdn.net/akof1314/article/details/111773851
Unity Editorを使用してエディタツールを作成する場合
エディターで内部クラスやメソッドにアクセスできないことがよくあります。
反射を使用する必要がある
リフレクションのメソッドを書くのが面倒、Unityがバージョンアップして内部インターフェースが変わるとリフレクションに失敗する
答え:
公式コードを参照してください
https://github.com/Unity-Technologies/UnityCsReference/blob/master/Editor/Mono/AssemblyInfo/AssemblyInfo.cs
たくさんあることがわかります。
[アセンブリ: InternalsVisibleTo(“Unity.InternalAPIEditorBridge.00x”)]
この部分は、独自のエディター クラスを拡張するために公式に提供されています。
練習
エディターの下に新しいフォルダーを作成します
フォルダーには次のファイルが含まれています。
TestTimeArea.cs
書類
using UnityEditor;
public class TestTimeArea : EditorWindow
{
private TimeArea m_timeArea = null;
private void OnEnable()
{
if (this.m_timeArea == null)
{
this.m_timeArea = new TimeArea(true)
{
hRangeLocked = false,
vRangeLocked = true,
hSlider = true,
vSlider = false,
margin = 10f,
scaleWithWindow = true,
ignoreScrollWheelUntilClicked = true
};
}
}
}
TestTimeArea.asmdef
書類
{
"name": "Unity.InternalAPIEditorBridge.001",
"references": [],
"optionalUnityReferences": [],
"includePlatforms": ["Editor"],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": []
}
TestTimeArea.cs
これで、ファイルが正常にコンパイルでき、正常に使用できることがわかります。UnityEditor.TimeArea