public static int GetSceneIndex(this BuildConfiguration configuration, SceneAssetInfo scene) { int platformScenesCount = 0; foreach (var platformConfiguration in configuration.Platforms) { if (IsActive(configuration, platformConfiguration)) { var platformIndex = platformConfiguration.Scenes.IndexOf(scene); if (platformIndex >= 0) { return(configuration.DefaultScenesFirst ? configuration.DefaultScenes.Count + platformIndex : platformIndex); } platformScenesCount = platformConfiguration.Scenes.Count; } } var defaultIndex = configuration.DefaultScenes.IndexOf(scene); if (defaultIndex >= 0) { return(configuration.DefaultScenesFirst ? defaultIndex : defaultIndex + platformScenesCount); } return(-1); }
public static SceneAsset GetSceneAsset(this SceneAssetInfo sceneAssetInfo) { if (string.IsNullOrEmpty(sceneAssetInfo.Guid)) { return(null); } var path = AssetDatabase.GUIDToAssetPath(sceneAssetInfo.Guid); var scene = AssetDatabase.LoadAssetAtPath <SceneAsset>(path); return(scene); }
public void AddItemsToMenu(GenericMenu menu) { menu.AddItem(new GUIContent("Add Build Settings Scenes to Default"), false, () => { var conf = BuildConfigurationSettings.Instance.BuildConfigurations[m_SelectionIndex]; foreach (var scene in EditorBuildSettings.scenes) { var sceneAssetInfo = new SceneAssetInfo(); sceneAssetInfo.SetSceneAsset(scene); conf.DefaultScenes.Add(sceneAssetInfo); } BuildConfigurationSettings.Save(); }); }
public static void SetSceneAsset(this SceneAssetInfo sceneAssetInfo, EditorBuildSettingsScene sceneAsset) { var path = sceneAsset.path; if (string.IsNullOrEmpty(path) == false) { var guid = AssetDatabase.AssetPathToGUID(path); sceneAssetInfo.Guid = guid; } else { sceneAssetInfo.Guid = string.Empty; } }
public static void SetSceneAsset(this SceneAssetInfo sceneAssetInfo, SceneAsset sceneAsset) { var path = AssetDatabase.GetAssetPath(sceneAsset); if (string.IsNullOrEmpty(path) == false) { var guid = AssetDatabase.AssetPathToGUID(path); sceneAssetInfo.Guid = guid; } else { sceneAssetInfo.Guid = string.Empty; } }
SceneAssetInfo ContentTypeListItem(Rect pos, SceneAssetInfo itemValue) { if (itemValue == null) { itemValue = new SceneAssetInfo(); } int indentLevel = EditorGUI.indentLevel; EditorGUI.indentLevel = 0; Rect sceneIndexRect = m_ShowBuildIndex ? new Rect(pos.x, pos.y, 20f, pos.height) : new Rect(pos.x, pos.y, 0f, 0f); Rect objectFieldRect = new Rect(pos.x + sceneIndexRect.width, pos.y + 2, pos.width - 20f - sceneIndexRect.width, 16); Rect addressableToggleRect = new Rect(objectFieldRect.x + objectFieldRect.width + 2, pos.y, 20f, pos.height); if (m_ShowBuildIndex) { int sceneIndex = BuildConfigurationSettings.Instance.Configuration.GetSceneIndex(itemValue); GUI.Label(sceneIndexRect, sceneIndex.ToString()); } var sceneAsset = itemValue.GetSceneAsset(); bool sceneWithError = sceneAsset == null; GUI.color = sceneWithError ? s_ErrorColor : Color.white; EditorGUI.BeginChangeCheck(); var newSceneAsset = EditorGUI.ObjectField(objectFieldRect, sceneAsset, typeof(SceneAsset), false) as SceneAsset; if (EditorGUI.EndChangeCheck()) { itemValue.SetSceneAsset(newSceneAsset); } GUI.color = Color.white; itemValue.Addressable = GUI.Toggle(addressableToggleRect, itemValue.Addressable, AddressableGuiContent); EditorGUI.indentLevel = indentLevel; return(itemValue); }