This commit is contained in:
wsh
2025-06-11 16:51:05 +09:00
57 changed files with 7204 additions and 878 deletions

View File

@@ -0,0 +1,45 @@
using UnityEditor;
using UnityEngine;
using System.IO;
using System.Collections.Generic;
using Newtonsoft.Json;
using Studio.Manage;
public class ResourcesFileSizeExporter
{
[MenuItem("Tools/Export Resources File Sizes to JSON")]
public static void ExportFileSizes()
{
string resourcesPath = Application.dataPath + "/Resources";
var sampleAssetPaths = Application.dataPath + "/Resources/Sample";
var fileSizeListWrapper = new FileSizeListWrapper();
if (!Directory.Exists(sampleAssetPaths))
{
return;
}
Dictionary<string, long> fileSizes = new Dictionary<string, long>();
string[] files = Directory.GetFiles(sampleAssetPaths, "*.prefab", SearchOption.AllDirectories);
foreach (string filePath in files)
{
var fileEntry = new FileSizeEntry();
long fileByteSize = new FileInfo(filePath).Length;
string fileName = Path.GetFileNameWithoutExtension(filePath);
fileEntry.name = fileName;
fileEntry.size = fileByteSize;
fileSizeListWrapper.files.Add(fileEntry);
}
string json = JsonConvert.SerializeObject(fileSizeListWrapper);
string outputPath = Path.Combine(resourcesPath, "FileSizes.json");
File.WriteAllText(outputPath, json);
Debug.Log($"파일 이름/크기 정보가 저장되었습니다: {outputPath}");
AssetDatabase.Refresh();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 5f5ead7d05f396848bdd5d3a16b3587f

Binary file not shown.

After

Width:  |  Height:  |  Size: 879 B

View File

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: d7e293787c7fd5241a49ea9d28ddee55
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 922 B

View File

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: fe7dcc3af6509a74cbb1eec04d1e61ba
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 KiB

View File

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: 9f78990e0d2ada041b0c01f173a7d4f0
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -30,7 +30,7 @@ ModelImporter:
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1

View File

@@ -30,7 +30,7 @@ ModelImporter:
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1

View File

@@ -30,7 +30,7 @@ ModelImporter:
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1

View File

@@ -30,7 +30,7 @@ ModelImporter:
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1

View File

@@ -30,7 +30,7 @@ ModelImporter:
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1

View File

@@ -30,7 +30,7 @@ ModelImporter:
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1

View File

@@ -35,7 +35,7 @@ ModelImporter:
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a7d6be18c97d18541ad12411ce8e5f22
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -112,7 +112,7 @@ RectTransform:
m_Father: {fileID: 1685799791316290074}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 0.99998707}
m_AnchorMax: {x: 1, y: 0.99999106}
m_AnchoredPosition: {x: 2, y: 0}
m_SizeDelta: {x: 8, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
@@ -1018,7 +1018,7 @@ MonoBehaviour:
m_HandleRect: {fileID: 5808496954263173159}
m_Direction: 2
m_Value: 0
m_Size: 0.99998707
m_Size: 1
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
@@ -1062,8 +1062,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 210, y: -408.97}
m_SizeDelta: {x: 420, y: 817.93}
m_AnchoredPosition: {x: 210, y: -431.02136}
m_SizeDelta: {x: 420, y: 862.0427}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7966294254755768478
CanvasRenderer:
@@ -1741,7 +1741,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: -0.00034048597, y: 0.005433774}
m_AnchoredPosition: {x: -0.00034048597, y: 0.0035585074}
m_SizeDelta: {x: 282.99957, y: 2}
m_Pivot: {x: 0, y: 1}
--- !u!114 &2780744526690132257
@@ -2202,8 +2202,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 210, y: -501.18732}
m_SizeDelta: {x: 420, y: 817.9348}
m_AnchoredPosition: {x: 210, y: -531.1099}
m_SizeDelta: {x: 420, y: 877.78}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &5930958411786542109
MonoBehaviour:

File diff suppressed because it is too large Load Diff

View File

@@ -99,35 +99,35 @@ MonoBehaviour:
obsoleteHasProbeVolumes:
m_Keys: []
m_Values:
m_PrefilteringModeMainLightShadows: 1
m_PrefilteringModeAdditionalLight: 4
m_PrefilteringModeAdditionalLightShadows: 1
m_PrefilterXRKeywords: 0
m_PrefilteringModeForwardPlus: 1
m_PrefilteringModeDeferredRendering: 1
m_PrefilteringModeScreenSpaceOcclusion: 1
m_PrefilterDebugKeywords: 0
m_PrefilterWriteRenderingLayers: 0
m_PrefilterHDROutput: 0
m_PrefilterAlphaOutput: 0
m_PrefilterSSAODepthNormals: 0
m_PrefilterSSAOSourceDepthLow: 0
m_PrefilterSSAOSourceDepthMedium: 0
m_PrefilterSSAOSourceDepthHigh: 0
m_PrefilterSSAOInterleaved: 0
m_PrefilterSSAOBlueNoise: 0
m_PrefilterSSAOSampleCountLow: 0
m_PrefilterSSAOSampleCountMedium: 0
m_PrefilterSSAOSampleCountHigh: 0
m_PrefilterDBufferMRT1: 0
m_PrefilterDBufferMRT2: 0
m_PrefilterDBufferMRT3: 0
m_PrefilterSoftShadowsQualityLow: 0
m_PrefilterSoftShadowsQualityMedium: 0
m_PrefilterSoftShadowsQualityHigh: 0
m_PrefilteringModeMainLightShadows: 3
m_PrefilteringModeAdditionalLight: 3
m_PrefilteringModeAdditionalLightShadows: 0
m_PrefilterXRKeywords: 1
m_PrefilteringModeForwardPlus: 0
m_PrefilteringModeDeferredRendering: 0
m_PrefilteringModeScreenSpaceOcclusion: 0
m_PrefilterDebugKeywords: 1
m_PrefilterWriteRenderingLayers: 1
m_PrefilterHDROutput: 1
m_PrefilterAlphaOutput: 1
m_PrefilterSSAODepthNormals: 1
m_PrefilterSSAOSourceDepthLow: 1
m_PrefilterSSAOSourceDepthMedium: 1
m_PrefilterSSAOSourceDepthHigh: 1
m_PrefilterSSAOInterleaved: 1
m_PrefilterSSAOBlueNoise: 1
m_PrefilterSSAOSampleCountLow: 1
m_PrefilterSSAOSampleCountMedium: 1
m_PrefilterSSAOSampleCountHigh: 1
m_PrefilterDBufferMRT1: 1
m_PrefilterDBufferMRT2: 1
m_PrefilterDBufferMRT3: 1
m_PrefilterSoftShadowsQualityLow: 1
m_PrefilterSoftShadowsQualityMedium: 1
m_PrefilterSoftShadowsQualityHigh: 1
m_PrefilterSoftShadows: 0
m_PrefilterScreenCoord: 0
m_PrefilterNativeRenderPass: 0
m_PrefilterScreenCoord: 1
m_PrefilterNativeRenderPass: 1
m_PrefilterUseLegacyLightmaps: 0
m_ShaderVariantLogLevel: 0
m_ShadowCascades: 0

View File

@@ -56,7 +56,17 @@ MonoBehaviour:
- rid: 8640070351411478628
- rid: 8640070351411478629
m_RuntimeSettings:
m_List: []
m_List:
- rid: 8640070351411478610
- rid: 8640070351411478612
- rid: 8640070351411478614
- rid: 8640070351411478615
- rid: 8640070351411478616
- rid: 8640070351411478617
- rid: 8640070351411478619
- rid: 8640070351411478621
- rid: 8640070351411478625
- rid: 8640070351411478628
m_AssetVersion: 8
m_ObsoleteDefaultVolumeProfile: {fileID: 0}
m_RenderingLayerNames:

View File

@@ -0,0 +1 @@
{"files":[{"name":"18TH","size":6262},{"name":"AGV","size":6227},{"name":"Floor","size":2656},{"name":"MPL","size":38590},{"name":"Port","size":14275},{"name":"RKG","size":5389},{"name":"Stacker","size":2675971},{"name":"StackerCrane","size":16296},{"name":"Wall","size":3205}]}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: de84ca4c6a26d104ebef9819b6530248
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,272 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &102715529012169959
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5951700390897484313}
- component: {fileID: 4516150584740527297}
- component: {fileID: 7841113446800851947}
m_Layer: 5
m_Name: Text_AssetName
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5951700390897484313
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 102715529012169959}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2062179146838381722}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 180.8, y: -15}
m_SizeDelta: {x: 300, y: 17}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4516150584740527297
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 102715529012169959}
m_CullTransparentMesh: 1
--- !u!114 &7841113446800851947
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 102715529012169959}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Asset Name
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 69abd87f38225ed46aa612577c25f379, type: 2}
m_sharedMaterial: {fileID: -7290017371581542385, guid: 69abd87f38225ed46aa612577c25f379, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 14
m_fontSizeBase: 14
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 256
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &548512801249676078
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2062179146838381722}
- component: {fileID: 8381326877424072060}
- component: {fileID: 7283401773250522798}
- component: {fileID: 3209002478171196024}
- component: {fileID: 815043479758428699}
m_Layer: 5
m_Name: PRF_AssetHierarchyFileItem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2062179146838381722
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 548512801249676078}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5951700390897484313}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 370, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8381326877424072060
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 548512801249676078}
m_CullTransparentMesh: 1
--- !u!114 &7283401773250522798
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 548512801249676078}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 6ce4c9afe0f40c84288f222f580883d5, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &3209002478171196024
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 548512801249676078}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 69dbe4f926c804947befeb7c9de0f380, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &815043479758428699
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 548512801249676078}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 7283401773250522798}
m_OnClick:
m_PersistentCalls:
m_Calls: []

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6d63d21cb96135d428833f5351f4b996
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,596 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &252445660986721945
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3157082195895231773}
- component: {fileID: 4098812721246824191}
- component: {fileID: 3500022784909769839}
m_Layer: 5
m_Name: Text_FolderName
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3157082195895231773
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 252445660986721945}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4369170814888687918}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 180.5, y: -15}
m_SizeDelta: {x: 320, y: 17}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4098812721246824191
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 252445660986721945}
m_CullTransparentMesh: 1
--- !u!114 &3500022784909769839
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 252445660986721945}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: flexing.xr/samsung
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 9a2c7e704ad3e62438526dc8aecaeb56, type: 2}
m_sharedMaterial: {fileID: 682561501981441939, guid: 9a2c7e704ad3e62438526dc8aecaeb56, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 14
m_fontSizeBase: 14
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 256
m_textAlignment: 65535
m_characterSpacing: -1.5
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &641771568301292693
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 508577269123562481}
- component: {fileID: 2516614746078785691}
- component: {fileID: 6473059881632327762}
m_Layer: 5
m_Name: Checkmark
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &508577269123562481
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 641771568301292693}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 3504009785478294066}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 6, y: -6}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2516614746078785691
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 641771568301292693}
m_CullTransparentMesh: 1
--- !u!114 &6473059881632327762
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 641771568301292693}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: fe7dcc3af6509a74cbb1eec04d1e61ba, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &3587471037970769080
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6376616067819932159}
- component: {fileID: 2038215860680662931}
- component: {fileID: 8319324561568148257}
m_Layer: 5
m_Name: PRF_AssetHierarchyFolderItem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6376616067819932159
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3587471037970769080}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 4369170814888687918}
- {fileID: 9077978097104377710}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 370, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2038215860680662931
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3587471037970769080}
m_CullTransparentMesh: 1
--- !u!114 &8319324561568148257
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3587471037970769080}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: accc46350e7e933409215846c3795ebd, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &6471810780394336552
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4369170814888687918}
- component: {fileID: 5338755847443157427}
- component: {fileID: 7648158264391556040}
m_Layer: 5
m_Name: Title
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4369170814888687918
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6471810780394336552}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3157082195895231773}
- {fileID: 9123494394013421800}
m_Father: {fileID: 6376616067819932159}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 185, y: -15}
m_SizeDelta: {x: 370, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5338755847443157427
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6471810780394336552}
m_CullTransparentMesh: 1
--- !u!114 &7648158264391556040
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6471810780394336552}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 6ce4c9afe0f40c84288f222f580883d5, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &7084331205838790795
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 9077978097104377710}
- component: {fileID: 744587351963815865}
- component: {fileID: 8723293088769338705}
- component: {fileID: 8242005510868357972}
m_Layer: 5
m_Name: FoldContent
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &9077978097104377710
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7084331205838790795}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6376616067819932159}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: -30}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &744587351963815865
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7084331205838790795}
m_CullTransparentMesh: 1
--- !u!114 &8723293088769338705
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7084331205838790795}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 0
m_ChildForceExpandWidth: 0
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!114 &8242005510868357972
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7084331205838790795}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 0
m_VerticalFit: 2
--- !u!1 &7477114861391641920
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 9123494394013421800}
- component: {fileID: 7354789801490151204}
m_Layer: 5
m_Name: Toggle_Fold
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &9123494394013421800
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7477114861391641920}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3504009785478294066}
m_Father: {fileID: 4369170814888687918}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 168.5, y: 0}
m_SizeDelta: {x: 14, y: 14}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &7354789801490151204
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7477114861391641920}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 1804161156326407850}
toggleTransition: 1
graphic: {fileID: 6473059881632327762}
m_Group: {fileID: 0}
onValueChanged:
m_PersistentCalls:
m_Calls: []
m_IsOn: 0
--- !u!1 &8950904475714762765
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3504009785478294066}
- component: {fileID: 353695906952837837}
- component: {fileID: 1804161156326407850}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3504009785478294066
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8950904475714762765}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 508577269123562481}
m_Father: {fileID: 9123494394013421800}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: -6, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &353695906952837837
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8950904475714762765}
m_CullTransparentMesh: 1
--- !u!114 &1804161156326407850
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8950904475714762765}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: d7e293787c7fd5241a49ea9d28ddee55, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 08fd68bd4ed16f74db2dba0fb06a7b0c
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -39,7 +39,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: -10}
m_SizeDelta: {x: 0, y: 35}
m_Pivot: {x: 0, y: 0.5}
--- !u!114 &8577872390119345382
@@ -621,7 +621,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 420, y: 50}
m_SizeDelta: {x: 420, y: 110}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &9006872392457284266
CanvasRenderer:
@@ -1128,7 +1128,7 @@ MonoBehaviour:
m_Color: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 0
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []

View File

@@ -367,8 +367,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 0}
m_AnchoredPosition: {x: 0, y: -30}
m_SizeDelta: {x: 110, y: 30}
m_AnchoredPosition: {x: 0, y: -15}
m_SizeDelta: {x: 110, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &499100886614822048
CanvasRenderer:
@@ -620,7 +620,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 110, y: 140}
m_SizeDelta: {x: 110, y: 110}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &9006872392457284266
CanvasRenderer:
@@ -1105,8 +1105,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 80, y: 50}
m_AnchoredPosition: {x: 0, y: 5}
m_SizeDelta: {x: 80, y: 80}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5193183312611458682
CanvasRenderer:

File diff suppressed because it is too large Load Diff

View File

@@ -73,7 +73,7 @@ public static class RuntimePreviewGenerator
}
}
private const int PREVIEW_LAYER = 22;
private static int PREVIEW_LAYER => LayerMask.NameToLayer("ThumbnailObject");
private static Vector3 PREVIEW_POSITION = new Vector3( -250f, -250f, -250f );
private static Camera renderCamera;//모델을 렌더링 하는 카메라

View File

@@ -28,6 +28,7 @@ namespace Studio.Util
public bool isLoading = false;
public float progress;
public Texture2D thumbnail;
public long assetSize;
public List<Transform> drawTransforms = new List<Transform>();
public UnityEvent<float> onLoadProgress = new UnityEvent<float>();

View File

@@ -1,15 +1,29 @@
using Studio.AssetTool;
using Newtonsoft.Json;
using Studio.AssetTool;
using Studio.Command;
using Studio.HierarchyTree;
using Studio.Services;
using Studio.Util;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEngine;
namespace Studio.Manage
{
[System.Serializable]
public class FileSizeEntry
{
public string name;
public long size;
}
[System.Serializable]
public class FileSizeListWrapper
{
public List<FileSizeEntry> files = new List<FileSizeEntry>();
}
public class AssetManager : Manager
{
public List<string> localAssetPaths = new List<string>();
@@ -22,6 +36,16 @@ namespace Studio.Manage
public Action<AssetManagerData> onSetAssetManager;
public Action<AssetManagerData> onSetAssetSetting;
public Action<Dictionary<string, List<string>>> onSetAssetHierarchy;
public Action<AssetInfo> onSetAssetInfo;
public struct AssetInfo
{
public string assetName;
public string size;
public string polygons;
public string materials;
public string textureSize;
}
public override void Init()
{
@@ -33,8 +57,10 @@ namespace Studio.Manage
var sceneSettingService = ManagerHub.instance.Get<SceneStartSettingManager>();
var projectManager = ManagerHub.instance.Get<ProjectManager>();
fbxFileManager.onLoadComplete += OnLoadCustomAsset;
onAddSettingPaths += canvas_Popup.panel_assetsetting.SetAssetPathItmes;
onSetAssetSetting += canvas_Popup.panel_assetsetting.SetAssetManager;
onAddSettingPaths += canvas_Popup.panel_localassets.SetAssetPathItmes;
onSetAssetSetting += canvas_Popup.panel_localassets.SetAssetManager;
onSetAssetHierarchy += canvas_Popup.panel_assethierarchy.SetLocalAssetHierarchy;
onSetAssetInfo += canvas_Popup.panel_assetinfo.SetAssetInfo;
}
public void ClearFolderPathList()
@@ -80,8 +106,11 @@ namespace Studio.Manage
public void InitRessourceAsset()
{
var assets = Resources.LoadAll<GameObject>("Sample");
var filesSize = Resources.Load<TextAsset>("FileSizes").text;
var fileSizeData = JsonConvert.DeserializeObject<FileSizeListWrapper>(filesSize);
var fbxFileManager = ManagerHub.instance.Get<FBXFileManager>();
fbxFileManager.LoadResource(assets);
fbxFileManager.LoadResource(assets, fileSizeData);
}
@@ -89,7 +118,6 @@ namespace Studio.Manage
{
var fbxFileManager = ManagerHub.instance.Get<FBXFileManager>();
fbxFileManager.LoadLocalFBXDirectorys(folderPathList);
var assetManagerData = new AssetManagerData();
assetManagerData.localAssetsPaths.AddRange(folderPathList);
}
@@ -102,8 +130,9 @@ namespace Studio.Manage
{
var projectManager = ManagerHub.instance.Get<ProjectManager>();
var fbxFileManager = ManagerHub.instance.Get<FBXFileManager>();
onSetAssetHierarchy?.Invoke(fbxFileManager.fileDatas);
if (projectManager.curProjectData.assetDatas.Count <= 0)
if (projectManager.curProjectData == null || projectManager.curProjectData.assetDatas.Count <= 0)
return;
List<AssetData> assets = projectManager.curProjectData.assetDatas;
@@ -142,5 +171,143 @@ namespace Studio.Manage
connector.OnRestoreHierarchy(parent, child);
}
}
public void SetAssetInfo(string name)
{
var fbxFileManager = ManagerHub.instance.Get<FBXFileManager>();
var selectAsset = fbxFileManager.dataRepo.FindFromName(name);
if (selectAsset == null)
return;
var assetInfo = new AssetInfo()
{
assetName = selectAsset.assetName,
size = FormatBytes(selectAsset.assetSize),
polygons = GetAssetPolygons(selectAsset),
materials = GetAssetMaterialsCount(selectAsset),
textureSize = GetTextureSize(selectAsset)
};
onSetAssetInfo?.Invoke(assetInfo);
}
private string GetTextureSize(CustomAssetData asset)
{
Renderer[] renderers = asset.loadedObject.GetComponentsInChildren<Renderer>(true);
HashSet<Texture> allTextures = new HashSet<Texture>();
long totalTextureSize = 0;
foreach (var renderer in renderers)
{
foreach (var mat in renderer.sharedMaterials)
{
if (mat == null)
continue;
foreach (string textureName in mat.GetTexturePropertyNames())
{
var tex = mat.GetTexture(textureName);
if (tex != null && !allTextures.Contains(tex))
{
allTextures.Add(tex);
var size = CalculateTextureSize(tex);
totalTextureSize += size;
}
}
}
}
return FormatBytes(totalTextureSize);
}
private string GetAssetMaterialsCount(CustomAssetData asset)
{
Renderer[] renderers = asset.loadedObject.GetComponentsInChildren<Renderer>(true);
HashSet<Material> allMaterials = new HashSet<Material>();
foreach (var renderer in renderers)
{
foreach (var mat in renderer.sharedMaterials)
{
if (mat == null)
continue;
allMaterials.Add(mat);
}
}
return allMaterials.Count.ToString();
}
private string GetAssetPolygons(CustomAssetData asset)
{
MeshFilter[] meshFilters = asset.loadedObject.GetComponentsInChildren<MeshFilter>(true);
SkinnedMeshRenderer[] skinnedRenderers = asset.loadedObject.GetComponentsInChildren<SkinnedMeshRenderer>(true);
int totalTriangles = 0;
foreach (var mf in meshFilters)
{
if (mf.sharedMesh != null)
{
int tris = mf.sharedMesh.triangles.Length / 3;
totalTriangles += tris;
}
}
foreach (var smr in skinnedRenderers)
{
if (smr.sharedMesh != null)
{
int tris = smr.sharedMesh.triangles.Length / 3;
totalTriangles += tris;
}
}
return totalTriangles.ToString();
}
private long CalculateTextureSize(Texture tex)
{
if (tex is Texture2D tex2D)
{
int bpp = GetBitsPerPixel(tex2D.format);
return tex2D.width * tex2D.height * bpp / 8;
}
return 0;
}
private int GetBitsPerPixel(TextureFormat format)
{
switch (format)
{
case TextureFormat.RGBA32:
case TextureFormat.ARGB32:
return 32;
case TextureFormat.RGB24:
return 24;
case TextureFormat.Alpha8:
return 8;
case TextureFormat.DXT1:
return 4;
case TextureFormat.DXT5:
return 8;
default:
return 32;
}
}
private string FormatBytes(long bytes)
{
if (bytes < 1024)
{
return $"{bytes} B";
}
else if (bytes < 1024 * 1024)
{
return $"{(bytes / 1024f):F2} KB";
}
else if (bytes < 1024L * 1024L * 1024L)
{
return $"{(bytes / 1024f / 1024f):F2} MB";
}
else
{
return $"{(bytes / 1024f / 1024f / 1024f):F2} GB";
}
}
}
}

View File

@@ -15,6 +15,8 @@ using Studio.Command;
using Studio.Manage;
using Studio.AssetLibraryTree;
using Studio.Core;
using XRLib;
using UnityEngine.Profiling;
namespace Studio.AssetTool
{
@@ -34,6 +36,7 @@ namespace Studio.AssetTool
public Action onLoadComplete;
private HashSet<string> filePaths = new();
public Dictionary<string, List<string>> fileDatas = new();
public FBXFileManager()
{
dataRepo = new CustomAssetDataRepository();
@@ -52,7 +55,7 @@ namespace Studio.AssetTool
filePaths.Clear();
}
public void LoadResource(GameObject[] assets)
public void LoadResource(GameObject[] assets, FileSizeListWrapper fileSizeListWrapper)
{
foreach (var asset in assets)
{
@@ -69,6 +72,9 @@ namespace Studio.AssetTool
assetData.assetName = assetName;
assetData.folderName = "Base Library";
var fileSzie = fileSizeListWrapper.files.Find(item => item.name == assetName);
assetData.assetSize = fileSzie.size;
assetData.isLoading = true;
assetData.isLoadComplete = true;
var obj= UnityEngine.GameObject.Instantiate(asset);
@@ -76,15 +82,18 @@ namespace Studio.AssetTool
obj.gameObject.SetActive(false);
assetData.loadedObject = obj;
assetData.OnLoadComplete();
Texture2D thumbnail = RuntimePreviewGenerator.GenerateModelPreview(assetData.loadedObject.transform, 320, 200);
RuntimePreviewGenerator.OrthographicMode = true;
Texture2D thumbnail = RuntimePreviewGenerator.GenerateModelPreview(assetData.loadedObject.transform, 320, 320);
thumbnail = TextureUtil.MakeReadableTexture(thumbnail);
assetData.thumbnail = thumbnail;
OnLoadComplete(assetData);
}
OnDirectoryLoadComplete();
}
public void LoadLocalFBXDirectorys(List<string> folderPaths)
{
fileDatas.Clear();
foreach (var path in folderPaths)
{
@@ -101,9 +110,13 @@ namespace Studio.AssetTool
}
var files = Directory.GetFiles(folderPath, "*.fbx", SearchOption.AllDirectories);
List<string> fileNames = new List<string>();
foreach (var file in files)
{
var fileName = Path.GetFileNameWithoutExtension(file);
fileNames.Add(fileName);
if (filePaths.Contains(NormalizePath(file)))
{
continue;
@@ -118,6 +131,15 @@ namespace Studio.AssetTool
private void OnDirectoryLoadComplete()
{
foreach(var asset in dataRepo.assetDatas)
{
if (!fileDatas.ContainsKey(asset.folderName))
{
fileDatas[asset.folderName] = new List<string>();
}
fileDatas[asset.folderName].Add(asset.assetName);
}
onLoadComplete?.Invoke();
}
@@ -145,7 +167,9 @@ namespace Studio.AssetTool
assetData.OnLoadComplete();
Texture2D thumbnail = RuntimePreviewGenerator.GenerateModelPreview(assetData.loadedObject.transform, 320, 200);
RuntimePreviewGenerator.OrthographicMode = true;
Texture2D thumbnail = RuntimePreviewGenerator.GenerateModelPreview(assetData.loadedObject.transform, 320, 320);
assetData.assetSize = new FileInfo(assetData.localFBXPath).Length;
thumbnail = TextureUtil.MakeReadableTexture(thumbnail);
assetData.thumbnail = thumbnail;
OnLoadComplete(assetData);

View File

@@ -31,9 +31,14 @@ namespace Studio.Manage
canvas_popup.panel_topmenuopenprojectinfo.onClickOpen += canvas_static.panel_scenetab.Init;
canvas_popup.panel_topmenuopenprojectinfo.onClickOpen += canvas_popup.panel_topmenuopenprojectinfo.Close;
canvas_popup.panel_assethierarchy.onClickAssetItem += canvas_popup.panel_assetinfo.SetPosition;
canvas_popup.panel_datafiltersetting.onSaveAPIFilterData += canvas_popup.panel_apiconnectmodal.SetFilterData;
canvas_popup.panel_assetsetting.onClickServerAssets += canvas_popup.panel_serverassets.Active;
canvas_popup.panel_assetsetting.onClickLocalAssets += canvas_popup.panel_localassets.Active;
canvas_popup.panel_assetsetting.onClickAssetHierarchy += canvas_popup.panel_assethierarchy.Active;
}
}
}

View File

@@ -21,6 +21,10 @@ namespace Studio
public Panel_APISetting panel_apisetting;
public Panel_MQTTSetting panel_mqttsetting;
public Panel_AssetSetting panel_assetsetting;
public Panel_ServerAssets panel_serverassets;
public Panel_LocalAssets panel_localassets;
public Panel_AssetHierarchy panel_assethierarchy;
public Panel_AssetInfo panel_assetinfo;
//public Panel_AssetManager panel_assetmanager;
public Panel_AccessibilitySettings panel_accessibilitysettings;
@@ -79,7 +83,8 @@ namespace Studio
panel_newprojectinfo.onClickCreate += () => CommandInvoker.instance.Invoke(new NewProjectCommand());
panel_openprojectinfo.onClickOpen += () => CommandInvoker.instance.Invoke(new OpenProjectCommand());
panel_assetsetting.onSelectedURL += assetManager.LoadAssetSettingFBXDirectorys;
panel_localassets.onSelectedURL += assetManager.LoadAssetSettingFBXDirectorys;
panel_assethierarchy.onClickFileItem += assetManager.SetAssetInfo;
panel_saveandnewchecker.onClickSaveAndNew += () => CommandInvoker.instance.Invoke(new SaveAndNewProjectCommand());
panel_saveandopenchecker.onClickSaveAndOpen += () => CommandInvoker.instance.Invoke(new SaveAndOpenProjectCommand());

View File

@@ -0,0 +1,29 @@
using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using XRLib.UI;
namespace Studio
{
public class UI_AssetHierarchyFileItem : UIBase
{
private TextMeshProUGUI Text_AssetName;
public Action<string, UI_AssetHierarchyFileItem> onClickFileItem;
public override void AfterAwake()
{
var button = GetComponent<Button>();
button.onClick.AddListener(OnClickButton);
}
public void SetData(string fileName)
{
Text_AssetName.SetText(fileName);
}
private void OnClickButton()
{
onClickFileItem?.Invoke(Text_AssetName.text, this);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 69dbe4f926c804947befeb7c9de0f380

View File

@@ -0,0 +1,70 @@
using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using XRLib.UI;
namespace Studio
{
public class UI_AssetHierarchyFolderItem : UIBase
{
private TextMeshProUGUI Text_FolderName;
private Toggle Toggle_Fold;
private RectTransform FoldContent;
private UI_AssetHierarchyFileItem prf_assetHierarchyFileItem;
public Action updateLayout;
public Action<string, UI_AssetHierarchyFileItem> onClickFileItem;
public override void AfterAwake()
{
Toggle_Fold.onValueChanged.AddListener(OnFoldChanged);
prf_assetHierarchyFileItem = Resources.Load<UI_AssetHierarchyFileItem>("Prefabs/UI/PRF_AssetHierarchyFileItem");
}
public void SetData(string folderName, List<string> files)
{
Text_FolderName.text = folderName;
foreach (Transform child in FoldContent)
Destroy(child.gameObject);
foreach (var file in files)
{
var item = Instantiate(prf_assetHierarchyFileItem, FoldContent);
item.onClickFileItem += OnClickFileItem;
item.SetData(file);
}
FoldContent.gameObject.SetActive(Toggle_Fold.isOn);
LayoutRebuilder.ForceRebuildLayoutImmediate(FoldContent);
ResizeSelf();
}
void OnFoldChanged(bool isOn)
{
FoldContent.gameObject.SetActive(isOn);
LayoutRebuilder.ForceRebuildLayoutImmediate(FoldContent);
var color = Toggle_Fold.targetGraphic.color;
color.a = isOn ? 0f : 1f;
Toggle_Fold.targetGraphic.color = color;
ResizeSelf();
}
void ResizeSelf()
{
float height = 0f;
foreach (RectTransform child in transform)
{
if (child.gameObject.activeSelf)
height += child.rect.height;
}
var rt = (RectTransform)transform;
rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height);
updateLayout?.Invoke();
}
private void OnClickFileItem(string name, UI_AssetHierarchyFileItem item)
{
onClickFileItem?.Invoke(name, item);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: accc46350e7e933409215846c3795ebd

View File

@@ -29,7 +29,6 @@ namespace Studio.UI
return;
onEndEditInputFieldURL?.Invoke(this);
Debug.Log("action " + onEndEditInputFieldURL.GetInvocationList().Length);
}
private void OnClickSelectedFolderButton()
{

View File

@@ -0,0 +1,104 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using XRLib.UI;
namespace Studio
{
public class Panel_AssetHierarchy : PanelBase
{
private Toggle Toggle_ServerAssetsFold;
private Toggle Toggle_LocalAssetsFold;
private RectTransform Content_AssetHierarchy;
private RectTransform ServerAssets;
private RectTransform LocalAssets;
private RectTransform ServerAssetsContent;
private RectTransform LocalAssetsContent;
private UI_AssetHierarchyFolderItem prf_assetHierarchyFolderItem;
private List<UI_AssetHierarchyFolderItem> assethierarchyFolderItems = new List<UI_AssetHierarchyFolderItem>();
public Action<string> onClickFileItem;
public Action<RectTransform> onClickAssetItem;
public override void AfterAwake()
{
prf_assetHierarchyFolderItem = Resources.Load<UI_AssetHierarchyFolderItem>("Prefabs/UI/PRF_AssetHierarchyFolderItem");
Toggle_LocalAssetsFold.onValueChanged.AddListener(OnChangedLocalAssetsFoldToggle);
Toggle_ServerAssetsFold.onValueChanged.AddListener(OnChangedServerAssetsFoldToggle);
}
public void Active(bool isOn)
{
SetActive(isOn);
}
private void OnChangedServerAssetsFoldToggle(bool isOn)
{
ToggleStateChanged(Toggle_ServerAssetsFold, isOn);
}
private void OnChangedLocalAssetsFoldToggle(bool isOn)
{
LocalAssetsContent.gameObject.SetActive(isOn);
ToggleStateChanged(Toggle_LocalAssetsFold, isOn);
UpdateLayout();
}
private void ToggleStateChanged(Toggle toggle, bool isOn)
{
var color = toggle.targetGraphic.color;
color.a = isOn ? 0f : 1f;
toggle.targetGraphic.color = color;
}
public void SetLocalAssetHierarchy(Dictionary<string, List<string>> fileDatas)
{
foreach(var item in assethierarchyFolderItems)
{
Destroy(item.gameObject);
}
assethierarchyFolderItems.Clear();
foreach (var fileData in fileDatas)
{
var item = Instantiate(prf_assetHierarchyFolderItem, LocalAssetsContent);
item.updateLayout += UpdateLayout;
item.onClickFileItem += OnClickFileItem;
item.SetData(fileData.Key, fileData.Value);
assethierarchyFolderItems.Add(item);
}
}
private void UpdateLayout()
{
ResizeLocalAssets();
ResizeRoot();
LayoutRebuilder.ForceRebuildLayoutImmediate(Content_AssetHierarchy);
}
private void ResizeLocalAssets()
{
float height = 0f;
foreach (RectTransform child in LocalAssetsContent)
{
if (child.gameObject.activeSelf)
height += child.rect.height;
}
LocalAssetsContent.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height);
}
private void ResizeRoot()
{
float height = 0f;
foreach (RectTransform child in LocalAssets)
{
if (child.gameObject.activeSelf)
height += child.rect.height;
}
LocalAssets.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height);
}
private void OnClickFileItem(string name, UI_AssetHierarchyFileItem item)
{
onClickFileItem?.Invoke(name);
onClickAssetItem?.Invoke(item.rectTransform);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: dfaca4ad268f53541aae86a720b4e243

View File

@@ -0,0 +1,56 @@
using UnityEngine;
using XRLib.UI;
using TMPro;
using Studio.Manage;
using UnityEngine.UI;
namespace Studio
{
public class Panel_AssetInfo : PanelBase
{
private Button Button_Close;
private TextMeshProUGUI AssetName;
private TextMeshProUGUI AssetSize;
private TextMeshProUGUI AssetPolygons;
private TextMeshProUGUI AssetMaterials;
private TextMeshProUGUI AssetTextureSize;
public override void AfterAwake()
{
Button_Close.onClick.AddListener(Close);
}
public void SetAssetInfo(AssetManager.AssetInfo assetInfo)
{
AssetName.SetText(assetInfo.assetName);
AssetSize.SetText(assetInfo.size);
AssetPolygons.SetText(assetInfo.polygons);
AssetMaterials.SetText(assetInfo.materials);
AssetTextureSize.SetText(assetInfo.textureSize);
}
public void SetPosition(RectTransform targetUI)
{
if (targetUI == null || rectTransform == null)
return;
SetActive(true);
Vector3[] targetCorners = new Vector3[4];
targetUI.GetWorldCorners(targetCorners);
Vector3 targetTopRight = targetCorners[2];
float myUIHeight = rectTransform.rect.height;
float myUIPivotY = rectTransform.pivot.y;
Vector3 desiredWorldPos = targetTopRight + new Vector3(rectTransform.sizeDelta.x / 2f, -myUIHeight * (1 - myUIPivotY), 0f);
Vector3 localPos = rectTransform.parent.InverseTransformPoint(desiredWorldPos);
rectTransform.localPosition = localPos;
}
private void Close()
{
SetActive(false);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: dcd185934b4f6184b872e9820d994353

View File

@@ -17,25 +17,14 @@ namespace Studio.UI
private Toggle Toggle_AssetHierarchy;
private RectTransform TabToggles;
private RectTransform ServerAssets;
private RectTransform LocalAssets;
private RectTransform AssetHierarchy;
private RectTransform Content_LocalAssets;
private Button Button_AddFolderPathItem;
private Button Button_Close;
private UI_FolderPathItem prf_folderPathItem;
private List<UI_FolderPathItem> folderPathItems = new List<UI_FolderPathItem>();
private Dictionary<int, string> selectedURLs = new Dictionary<int, string>();
public Action<int, string> onSelectedURL;
public Action<bool> onClickServerAssets;
public Action<bool> onClickLocalAssets;
public Action<bool> onClickAssetHierarchy;
public override void AfterAwake()
{
prf_folderPathItem = Resources.Load<UI_FolderPathItem>("Prefabs/UI/PRF_FolderPathItem");
toggleGroup = TabToggles.GetComponent<ToggleGroup>();
Toggle_ServerAssets.onValueChanged.AddListener(OnServerAssetsValueChanged);
Toggle_LocalAssets.onValueChanged.AddListener(OnLocalAssetsValueChanged);
@@ -45,9 +34,7 @@ namespace Studio.UI
Toggle_LocalAssets.group = toggleGroup;
Toggle_AssetHierarchy.group = toggleGroup;
Button_AddFolderPathItem.onClick.AddListener(OnClickAddFolderPathItemButton);
Button_Close.onClick.AddListener(Close);
folderPathItems.Clear();
}
public void Open()
@@ -61,17 +48,17 @@ namespace Studio.UI
private void OnServerAssetsValueChanged(bool isOn)
{
SetToggleChanged(Toggle_ServerAssets, isOn);
ServerAssets.gameObject.SetActive(isOn);
onClickServerAssets?.Invoke(isOn);
}
private void OnLocalAssetsValueChanged(bool isOn)
{
SetToggleChanged(Toggle_LocalAssets, isOn);
LocalAssets.gameObject.SetActive(isOn);
onClickLocalAssets?.Invoke(isOn);
}
private void OnAssetHierarchyValueChanged(bool isOn)
{
SetToggleChanged(Toggle_AssetHierarchy, isOn);
AssetHierarchy.gameObject.SetActive(isOn);
onClickAssetHierarchy?.Invoke(isOn);
}
private void SetToggleChanged(Toggle toggle, bool isOn)
{
@@ -89,80 +76,5 @@ namespace Studio.UI
text.color = Color.black;
}
}
private void OnClickAddFolderPathItemButton()
{
var item = Instantiate(prf_folderPathItem, Content_LocalAssets);
folderPathItems.Add(item);
item.onEndEditInputFieldURL += LoadAsstsPath;
selectedURLs.Add(folderPathItems.IndexOf(item), item.GetURL());
Button_AddFolderPathItem.transform.SetAsLastSibling();
}
private void LoadAsstsPath(UI_FolderPathItem item)
{
for (int i = 0; i < folderPathItems.Count; i++)
{
if (folderPathItems[i] == item)
{
onSelectedURL?.Invoke(i, item.GetURL());
}
}
}
public AssetManagerData GetAssetManagerData()
{
var assetManagerData = new AssetManagerData();
assetManagerData.localAssetsPaths.AddRange(selectedURLs.Values.ToList());
return assetManagerData;
}
public void SetAssetPathItmes(Dictionary<int, string> paths)
{
var keys = paths.Keys.ToList();
for (int i = 0; i < keys.Count; i++)
{
int key = keys[i];
if (selectedURLs.ContainsKey(key))
{
folderPathItems[i].SetData(paths[key]);
selectedURLs[key] = paths[key];
}
else
{
var item = Instantiate(prf_folderPathItem, Content_LocalAssets);
item.onEndEditInputFieldURL += LoadAsstsPath;
item.SetData(paths[key]);
folderPathItems.Add(item);
selectedURLs.Add(key, item.GetURL());
Button_AddFolderPathItem.transform.SetAsLastSibling();
}
}
}
public void SetAssetManager(AssetManagerData assetManagerData)
{
selectedURLs.Clear();
foreach (var item in folderPathItems)
{
Destroy(item.gameObject);
}
folderPathItems.Clear();
if (assetManagerData == null)
return;
for (int i = 0; i < assetManagerData.localAssetsPaths.Count; i++)
{
var item = Instantiate(prf_folderPathItem, Content_LocalAssets);
item.onEndEditInputFieldURL += LoadAsstsPath;
item.SetData(assetManagerData.localAssetsPaths[i]);
folderPathItems.Add(item);
selectedURLs.Add(i, item.GetURL());
Button_AddFolderPathItem.transform.SetAsLastSibling();
}
}
}
}

View File

@@ -0,0 +1,111 @@
using Studio.UI;
using Studio.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
using XRLib.UI;
namespace Studio
{
public class Panel_LocalAssets : PanelBase
{
private Button Button_AddFolderPathItem;
private RectTransform Content_LocalAssets;
private UI_FolderPathItem prf_folderPathItem;
private List<UI_FolderPathItem> folderPathItems = new List<UI_FolderPathItem>();
private Dictionary<int, string> selectedURLs = new Dictionary<int, string>();
public Action<int, string> onSelectedURL;
public override void AfterAwake()
{
prf_folderPathItem = Resources.Load<UI_FolderPathItem>("Prefabs/UI/PRF_FolderPathItem");
Button_AddFolderPathItem.onClick.AddListener(OnClickAddFolderPathItemButton);
folderPathItems.Clear();
}
public void Active(bool isOn)
{
SetActive(isOn);
}
private void OnClickAddFolderPathItemButton()
{
var item = Instantiate(prf_folderPathItem, Content_LocalAssets);
folderPathItems.Add(item);
item.onEndEditInputFieldURL += LoadAsstsPath;
selectedURLs.Add(folderPathItems.IndexOf(item), item.GetURL());
Button_AddFolderPathItem.transform.SetAsLastSibling();
}
private void LoadAsstsPath(UI_FolderPathItem item)
{
for (int i = 0; i < folderPathItems.Count; i++)
{
if (folderPathItems[i] == item)
{
onSelectedURL?.Invoke(i, item.GetURL());
}
}
}
public AssetManagerData GetAssetManagerData()
{
var assetManagerData = new AssetManagerData();
assetManagerData.localAssetsPaths.AddRange(selectedURLs.Values.ToList());
return assetManagerData;
}
public void SetAssetPathItmes(Dictionary<int, string> paths)
{
var keys = paths.Keys.ToList();
for (int i = 0; i < keys.Count; i++)
{
int key = keys[i];
if (selectedURLs.ContainsKey(key))
{
folderPathItems[i].SetData(paths[key]);
selectedURLs[key] = paths[key];
}
else
{
var item = Instantiate(prf_folderPathItem, Content_LocalAssets);
item.onEndEditInputFieldURL += LoadAsstsPath;
item.SetData(paths[key]);
folderPathItems.Add(item);
selectedURLs.Add(key, item.GetURL());
Button_AddFolderPathItem.transform.SetAsLastSibling();
}
}
}
public void SetAssetManager(AssetManagerData assetManagerData)
{
selectedURLs.Clear();
foreach (var item in folderPathItems)
{
Destroy(item.gameObject);
}
folderPathItems.Clear();
if (assetManagerData == null)
return;
for (int i = 0; i < assetManagerData.localAssetsPaths.Count; i++)
{
var item = Instantiate(prf_folderPathItem, Content_LocalAssets);
item.onEndEditInputFieldURL += LoadAsstsPath;
item.SetData(assetManagerData.localAssetsPaths[i]);
folderPathItems.Add(item);
selectedURLs.Add(i, item.GetURL());
Button_AddFolderPathItem.transform.SetAsLastSibling();
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 9775215d46a0570438911f8252d1705f

View File

@@ -47,7 +47,7 @@ namespace Studio.UI
var projectName = GetProjectName();
var projectPath = GetProjectRoute();
if (!IsProjectNameVaild(projectName) || !IsProjectPathVaild(projectPath))
if (!IsProjectNameVaild(projectName) || !IsProjectPathVaild(projectPath) || !IsProjectExistVaild())
{
return;
}
@@ -95,6 +95,17 @@ namespace Studio.UI
}
return true;
}
private bool IsProjectExistVaild()
{
var projectPath = InputField_ProjectRoute.text;
var projectNameAndExtension = $"{InputField_ProjectName.text}.ocs";
var filePath = Path.Combine(projectPath, projectNameAndExtension);
if (File.Exists(filePath))
{
return false;
}
return true;
}
}
}

View File

@@ -0,0 +1,13 @@
using UnityEngine;
using XRLib.UI;
namespace Studio
{
public class Panel_ServerAssets : PanelBase
{
public void Active(bool isOn)
{
SetActive(isOn);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e9030b3015f5d3349a567a901859ed32

View File

@@ -41,7 +41,7 @@ namespace Studio.UI
var projectName = GetProjectName();
var projectPath = GetProjectRoute();
if (!IsProjectNameVaild(projectName) || !IsProjectPathVaild(projectPath))
if (!IsProjectNameVaild(projectName) || !IsProjectPathVaild(projectPath) || !IsProjectExistVaild())
{
return;
}
@@ -87,5 +87,17 @@ namespace Studio.UI
}
return true;
}
private bool IsProjectExistVaild()
{
var projectPath = InputField_ProjectRoute.text;
var projectNameAndExtension = $"{InputField_ProjectName.text}.ocs";
var filePath = Path.Combine(projectPath, projectNameAndExtension);
if (File.Exists(filePath))
{
return false;
}
return true;
}
}
}

View File

@@ -32,7 +32,6 @@ namespace Studio.AssetLibraryTree
private AssetLibraryItem lastSelectedItem = null;
private float itemHeight; // Height of a single item.
private float folderHeight;
private int visibleItemCount; // Number of visible items that fit in the viewport.
private int currentIndex = -1; // The index of the first visible item.
@@ -42,7 +41,8 @@ namespace Studio.AssetLibraryTree
public bool isSiblingEditable;
int rowItemCount = 3;
private int rowItemCount = 3;
private float scrollViewOffset = 2f;
private void Awake()
{
@@ -85,9 +85,7 @@ namespace Studio.AssetLibraryTree
scrollRect.setToNextSiblingItem.AddListener(SetToNextSiblingItem);
//아이템 하나당 높이값 저장
itemHeight = itemPrefab.GetComponent<RectTransform>().rect.height;
folderHeight = folderPrefab.GetComponent<RectTransform>().rect.height;
float rowHeight = itemHeight + 10f; // row 간격 포함 (spacingY)
visibleItemCount = Mathf.CeilToInt(scrollRect.GetComponent<RectTransform>().sizeDelta.y / rowHeight) + 1;
visibleItemCount = Mathf.CeilToInt(scrollRect.GetComponent<RectTransform>().sizeDelta.y / itemHeight) + 1;
searchInput.onValueChanged.AddListener(SearchData);
//searchCancelButton.onClick.RemoveAllListeners();
@@ -124,6 +122,39 @@ namespace Studio.AssetLibraryTree
{
return root.Find(name, type);
}
public void CalculateSlotArea()
{
int fileCountCurLine = 0;
displayData.Clear();
foreach (var item in data)
{
if (item.type == AssetLibraryItemType.folder)
{
if (fileCountCurLine > 0)
{
for (int i = 0; i < rowItemCount - fileCountCurLine; i++)
{
displayData.Add(null);
}
fileCountCurLine = 0;
}
displayData.Add(item);
displayData.Add(null);
displayData.Add(null);
}
else
{
fileCountCurLine++;
displayData.Add(item);
if (fileCountCurLine == 3)
{
fileCountCurLine = 0;
}
}
}
}
public void SetData()
{
data.Clear();
@@ -144,9 +175,8 @@ namespace Studio.AssetLibraryTree
private void RebuildVisibleItems()
{
float rowHeight = itemHeight + 10f;
float scrollY = content.anchoredPosition.y;
int newRowIndex = Mathf.FloorToInt(scrollY / rowHeight);
int newRowIndex = Mathf.FloorToInt(scrollY / itemHeight);
if (newRowIndex < 0) newRowIndex = 0;
if (newRowIndex == currentIndex)
@@ -161,31 +191,9 @@ namespace Studio.AssetLibraryTree
foldersPool.Release(item);
activeItems.Clear();
activeFolders.Clear();
displayData.Clear();
activeFolders.Clear();
foreach (var item in data)
{
if (item.type == AssetLibraryItemType.folder)
{
int offset = displayData.Count % rowItemCount;
if (offset != 0)
{
int emptyCount = rowItemCount - offset;
for (int i = 0; i < emptyCount; i++)
displayData.Add(null);
}
displayData.Add(item);
displayData.Add(null);
displayData.Add(null);
}
else
{
displayData.Add(item);
}
}
CalculateSlotArea();
int startIndex = Mathf.Clamp(currentIndex * rowItemCount, 0, displayData.Count);
int endIndex = Mathf.Clamp((currentIndex + visibleItemCount) * rowItemCount, 0, displayData.Count);
@@ -196,60 +204,66 @@ namespace Studio.AssetLibraryTree
{
float spacingX = 25f;
float spacingY = 0f;
int folderCount = 0;
float height = 0f;
RectTransform viewport = scrollRect.GetComponent<RectTransform>();
float contentWidth = viewport.sizeDelta.x;
float itemWidth = itemPrefab.GetComponent<RectTransform>().sizeDelta.x;
int allRowItemCount = Mathf.CeilToInt(data.Count / rowItemCount);
float totalHeight = allRowItemCount * (itemHeight + spacingY);
int folderRowCount = 0;
int allRowItemCount = Mathf.CeilToInt(displayData.Count / (float)rowItemCount);
float totalHeight = allRowItemCount * (itemHeight + spacingY) + scrollViewOffset * 2;
content.sizeDelta = new Vector2(contentWidth, totalHeight);
for (int i = startIndex; i < endIndex; i++)
{
AssetLibraryItem item = displayData[i];
if (item == null)
continue;
if (item == null) continue;
RectTransform itemRt;
float width;
var width = 0f;
// 폴더 처리
if (item.type == AssetLibraryItemType.folder)
{
AssetLibraryScrollFolderUI itemUI = foldersPool.Get();
width = scrollRect.content.sizeDelta.x;
var itemUI = foldersPool.Get();
itemUI.SetItemData(item);
itemUI.transform.SetParent(content, false);
itemRt = itemUI.GetComponent<RectTransform>();
height = folderHeight;
activeFolders.Add(itemUI);
width = contentWidth;
}
// 파일 처리
else
{
AssetLibraryScrollItemUI itemUI = GetItemUI();
width = itemWidth;
var itemUI = GetItemUI();
itemUI.SetItemData(item);
itemUI.SetSelected(selectedItems);
itemUI.transform.SetParent(content, false);
itemRt = itemUI.GetComponent<RectTransform>();
height = itemHeight;
activeItems.Add(itemUI);
}
width = itemWidth;
}
// 위치 계산
int row = i / rowItemCount;
int col = i % rowItemCount;
float x = item.type == AssetLibraryItemType.folder? 0f:col * (width + spacingX) - ((rowItemCount - 1) * (width + spacingX)) / 2f;
float y = -(row-folderCount) * ( itemHeight + spacingY) + (-folderCount * (folderHeight + spacingY)) - height / 2f;
float x = (item.type == AssetLibraryItemType.folder)
? 0f
: col * (width + spacingX) - ((rowItemCount - 1) * (width + spacingX)) / 2f;
itemRt.sizeDelta = new Vector2(width, height);
float y = -(row - folderRowCount) * (itemHeight + spacingY)
- (folderRowCount * (itemHeight + spacingY))
- itemHeight / 2f - scrollViewOffset;
itemRt.sizeDelta = new Vector2(width, itemHeight);
itemRt.anchoredPosition = new Vector2(x, y);
if (item.type == AssetLibraryItemType.folder)
folderCount++;
folderRowCount++;
}
}
private AssetLibraryScrollItemUI GetItemUI()

View File

@@ -72,6 +72,8 @@ namespace Studio.HierarchyTree
visibleItemCount = Mathf.CeilToInt(scrollRect.GetComponent<RectTransform>().sizeDelta.y / itemHeight) + 1;
searchInput.onValueChanged.AddListener(SearchData);
ManagerHub.instance.Get<RunManager>().onRun += DisallowSiblingEdit;
ManagerHub.instance.Get<RunManager>().onStop += AllowSiblingEdit;
//searchCancelButton.onClick.RemoveAllListeners();
//searchCancelButton.onClick.AddListener(CancelSearch);
@@ -521,5 +523,13 @@ namespace Studio.HierarchyTree
RebuildVisibleItems();
}
}
private void AllowSiblingEdit()
{
isSiblingEditable = true;
}
private void DisallowSiblingEdit()
{
isSiblingEditable = false;
}
}
}

8
Assets/WorkSpace.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 435ab58676f04c54e82935535d201d4d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2a556b638d88fda4bac556618b3173aa
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: