Unity Editor代码引用子场景物体,需要激活子场景
解决问题:我们的Unity场景里允许存在子场景,但是你在Editor代码里是无法直接访问子场景物体的,需要在子场景加载后激活子场景,才可以用一些常规的API获取到子场景的物体
//常用API如下GameObject.FindEditorSceneManager.GetActiveScene().GetRootGameObjects()
上面这俩API都只能拿到主场景的GameObject,子场景的是获取不到的, 如何获得?由于我们项目的主场景和子场景都是代码加载的,因此在加载子场景后,把该场景激活即可。
EditorSceneManager.SetActiveScene(asset);
我们的技能Timeline编辑工具,需要在Timeline里引用子场景的物体,子场景是通过下面代码加载出来的
//加载子场景
public void LoadSceneAsset(AssetData item)
{Scene asset = EditorSceneManager.OpenScene(GetAssetPath(item.assetName), OpenSceneMode.Additive);//...................... 中间代码省略//重要代码EditorSceneManager.SetActiveScene(asset);
}