Skip to content

Commit ed61678

Browse files
committed
Fix and optimize displaying Scene details
1 parent 42253d1 commit ed61678

6 files changed

Lines changed: 221 additions & 7 deletions

File tree

Assets/Editor Toolbox/Editor/Drawers/Regular/SerializedSceneDrawer.cs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ protected override void OnGUISafe(Rect position, SerializedProperty property, GU
5151
return;
5252
}
5353

54-
var sceneData = SceneData.GetSceneData(sceneProperty);
54+
var sceneData = SceneData.GetSceneDataFromIndex(property);
5555
var spacing = EditorGUIUtility.standardVerticalSpacing;
5656
position.y += EditorGUIUtility.singleLineHeight + spacing;
5757
if (sceneData.inBuild)
@@ -82,10 +82,21 @@ private struct SceneData
8282
{
8383
public int index;
8484
public bool enabled;
85-
public GUID guid;
8685
public bool inBuild;
8786

88-
public static SceneData GetSceneData(SerializedProperty property)
87+
public static SceneData GetSceneDataFromIndex(SerializedProperty property)
88+
{
89+
var indexProperty = property.FindPropertyRelative("buildIndex");
90+
var index = indexProperty.intValue;
91+
return new SceneData()
92+
{
93+
index = index,
94+
enabled = index != -1,
95+
inBuild = index != -1
96+
};
97+
}
98+
99+
public static SceneData GetSceneDataFromScene(SerializedProperty property)
89100
{
90101
var sceneData = new SceneData()
91102
{
@@ -101,7 +112,7 @@ public static SceneData GetSceneData(SerializedProperty property)
101112
for (var i = 0; i < EditorBuildSettings.scenes.Length; i++)
102113
{
103114
var sceneSettings = EditorBuildSettings.scenes[i];
104-
var isEnabled = sceneSettings.enabled;
115+
var isEnabled = sceneSettings.enabled && !string.IsNullOrEmpty(sceneSettings.path);
105116
if (isEnabled)
106117
{
107118
sceneIndex++;
@@ -112,7 +123,6 @@ public static SceneData GetSceneData(SerializedProperty property)
112123
{
113124
sceneData.index = isEnabled ? sceneIndex : -1;
114125
sceneData.enabled = isEnabled;
115-
sceneData.guid = guid;
116126
sceneData.inBuild = true;
117127
break;
118128
}

Assets/Editor Toolbox/Runtime/Serialization/SerializedScene.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class SerializedScene : ISerializationCallbackReceiver
2222
private string sceneName;
2323
[SerializeField, HideInInspector]
2424
private string scenePath;
25-
[SerializeField, HideInInspector]
25+
[SerializeField]
2626
private int buildIndex;
2727

2828

@@ -37,7 +37,7 @@ void ISerializationCallbackReceiver.OnAfterDeserialize()
3737

3838
private void UpdateProperties()
3939
{
40-
#if UNITY_EDITOR
40+
#if UNITY_EDITOR
4141
if (SceneSerializationUtility.TryGetSceneData(sceneReference, out var sceneData))
4242
{
4343
SceneName = sceneData.SceneName;
Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
%YAML 1.1
2+
%TAG !u! tag:unity3d.com,2011:
3+
--- !u!29 &1
4+
OcclusionCullingSettings:
5+
m_ObjectHideFlags: 0
6+
serializedVersion: 2
7+
m_OcclusionBakeSettings:
8+
smallestOccluder: 5
9+
smallestHole: 0.25
10+
backfaceThreshold: 100
11+
m_SceneGUID: 00000000000000000000000000000000
12+
m_OcclusionCullingData: {fileID: 0}
13+
--- !u!104 &2
14+
RenderSettings:
15+
m_ObjectHideFlags: 0
16+
serializedVersion: 9
17+
m_Fog: 0
18+
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
19+
m_FogMode: 3
20+
m_FogDensity: 0.01
21+
m_LinearFogStart: 0
22+
m_LinearFogEnd: 300
23+
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
24+
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
25+
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
26+
m_AmbientIntensity: 1
27+
m_AmbientMode: 0
28+
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
29+
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
30+
m_HaloStrength: 0.5
31+
m_FlareStrength: 1
32+
m_FlareFadeSpeed: 3
33+
m_HaloTexture: {fileID: 0}
34+
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
35+
m_DefaultReflectionMode: 0
36+
m_DefaultReflectionResolution: 128
37+
m_ReflectionBounces: 1
38+
m_ReflectionIntensity: 1
39+
m_CustomReflection: {fileID: 0}
40+
m_Sun: {fileID: 0}
41+
m_IndirectSpecularColor: {r: 0.37311953, g: 0.38074014, b: 0.3587274, a: 1}
42+
m_UseRadianceAmbientProbe: 0
43+
--- !u!157 &3
44+
LightmapSettings:
45+
m_ObjectHideFlags: 0
46+
serializedVersion: 12
47+
m_GIWorkflowMode: 1
48+
m_GISettings:
49+
serializedVersion: 2
50+
m_BounceScale: 1
51+
m_IndirectOutputScale: 1
52+
m_AlbedoBoost: 1
53+
m_EnvironmentLightingMode: 0
54+
m_EnableBakedLightmaps: 1
55+
m_EnableRealtimeLightmaps: 0
56+
m_LightmapEditorSettings:
57+
serializedVersion: 12
58+
m_Resolution: 2
59+
m_BakeResolution: 40
60+
m_AtlasSize: 1024
61+
m_AO: 0
62+
m_AOMaxDistance: 1
63+
m_CompAOExponent: 1
64+
m_CompAOExponentDirect: 0
65+
m_ExtractAmbientOcclusion: 0
66+
m_Padding: 2
67+
m_LightmapParameters: {fileID: 0}
68+
m_LightmapsBakeMode: 1
69+
m_TextureCompression: 1
70+
m_FinalGather: 0
71+
m_FinalGatherFiltering: 1
72+
m_FinalGatherRayCount: 256
73+
m_ReflectionCompression: 2
74+
m_MixedBakeMode: 2
75+
m_BakeBackend: 1
76+
m_PVRSampling: 1
77+
m_PVRDirectSampleCount: 32
78+
m_PVRSampleCount: 512
79+
m_PVRBounces: 2
80+
m_PVREnvironmentSampleCount: 256
81+
m_PVREnvironmentReferencePointCount: 2048
82+
m_PVRFilteringMode: 1
83+
m_PVRDenoiserTypeDirect: 1
84+
m_PVRDenoiserTypeIndirect: 1
85+
m_PVRDenoiserTypeAO: 1
86+
m_PVRFilterTypeDirect: 0
87+
m_PVRFilterTypeIndirect: 0
88+
m_PVRFilterTypeAO: 0
89+
m_PVREnvironmentMIS: 1
90+
m_PVRCulling: 1
91+
m_PVRFilteringGaussRadiusDirect: 1
92+
m_PVRFilteringGaussRadiusIndirect: 5
93+
m_PVRFilteringGaussRadiusAO: 2
94+
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
95+
m_PVRFilteringAtrousPositionSigmaIndirect: 2
96+
m_PVRFilteringAtrousPositionSigmaAO: 1
97+
m_ExportTrainingData: 0
98+
m_TrainingDataDestination: TrainingData
99+
m_LightProbeSampleCountMultiplier: 4
100+
m_LightingDataAsset: {fileID: 0}
101+
m_LightingSettings: {fileID: 0}
102+
--- !u!196 &4
103+
NavMeshSettings:
104+
serializedVersion: 2
105+
m_ObjectHideFlags: 0
106+
m_BuildSettings:
107+
serializedVersion: 2
108+
agentTypeID: 0
109+
agentRadius: 0.5
110+
agentHeight: 2
111+
agentSlope: 45
112+
agentClimb: 0.4
113+
ledgeDropHeight: 0
114+
maxJumpAcrossDistance: 0
115+
minRegionArea: 2
116+
manualCellSize: 0
117+
cellSize: 0.16666667
118+
manualTileSize: 0
119+
tileSize: 256
120+
accuratePlacement: 0
121+
maxJobWorkers: 0
122+
preserveTilesOutsideBounds: 0
123+
debug:
124+
m_Flags: 0
125+
m_NavMeshData: {fileID: 0}
126+
--- !u!1 &284981408
127+
GameObject:
128+
m_ObjectHideFlags: 0
129+
m_CorrespondingSourceObject: {fileID: 0}
130+
m_PrefabInstance: {fileID: 0}
131+
m_PrefabAsset: {fileID: 0}
132+
serializedVersion: 6
133+
m_Component:
134+
- component: {fileID: 284981410}
135+
- component: {fileID: 284981409}
136+
m_Layer: 0
137+
m_Name: SceneLoader
138+
m_TagString: Untagged
139+
m_Icon: {fileID: 0}
140+
m_NavMeshLayer: 0
141+
m_StaticEditorFlags: 0
142+
m_IsActive: 1
143+
--- !u!114 &284981409
144+
MonoBehaviour:
145+
m_ObjectHideFlags: 0
146+
m_CorrespondingSourceObject: {fileID: 0}
147+
m_PrefabInstance: {fileID: 0}
148+
m_PrefabAsset: {fileID: 0}
149+
m_GameObject: {fileID: 284981408}
150+
m_Enabled: 1
151+
m_EditorHideFlags: 0
152+
m_Script: {fileID: 11500000, guid: 3515fc2458d4146449db76ec05b91a23, type: 3}
153+
m_Name:
154+
m_EditorClassIdentifier:
155+
scene:
156+
sceneReference: {fileID: 102900000, guid: f11034f4657f51a47aac14f26410c500, type: 3}
157+
sceneName: SampleScene
158+
scenePath: Assets/Examples/Scenes/SampleScene.unity
159+
buildIndex: 0
160+
--- !u!4 &284981410
161+
Transform:
162+
m_ObjectHideFlags: 0
163+
m_CorrespondingSourceObject: {fileID: 0}
164+
m_PrefabInstance: {fileID: 0}
165+
m_PrefabAsset: {fileID: 0}
166+
m_GameObject: {fileID: 284981408}
167+
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
168+
m_LocalPosition: {x: 0, y: 0, z: 0}
169+
m_LocalScale: {x: 1, y: 1, z: 1}
170+
m_Children: []
171+
m_Father: {fileID: 0}
172+
m_RootOrder: 0
173+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

Assets/Examples/Scenes/StartupScene.unity.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using UnityEngine;
2+
using UnityEngine.SceneManagement;
3+
4+
public class SceneLoader : MonoBehaviour
5+
{
6+
[SerializeField, SceneDetails]
7+
private SerializedScene scene;
8+
9+
private void Start()
10+
{
11+
SceneManager.LoadScene(scene.BuildIndex);
12+
}
13+
}

Assets/Examples/Scripts/SceneLoader.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)