diff --git a/.gitignore b/.gitignore
index b35e062..52c96e2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -74,4 +74,6 @@ crashlytics-build.properties
# Custom
/RenderOutput/
-.vscode
\ No newline at end of file
+.vscode
+
+output
\ No newline at end of file
diff --git a/Assets/NuGet.config b/Assets/NuGet.config
new file mode 100644
index 0000000..6b84ccd
--- /dev/null
+++ b/Assets/NuGet.config
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assets/NuGet.config.meta b/Assets/NuGet.config.meta
new file mode 100644
index 0000000..3d15df0
--- /dev/null
+++ b/Assets/NuGet.config.meta
@@ -0,0 +1,23 @@
+fileFormatVersion: 2
+guid: 6523ac68a1b8b7248a5f943e3ea15d3c
+labels:
+- NuGetForUnity
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 1
+ settings: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages.meta b/Assets/Packages.meta
new file mode 100644
index 0000000..1a731b9
--- /dev/null
+++ b/Assets/Packages.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 19474af60b80e414c89159274403d0c0
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity
index cf6bf1d..b46c8d9 100644
--- a/Assets/Scenes/SampleScene.unity
+++ b/Assets/Scenes/SampleScene.unity
@@ -171,6 +171,140 @@ CanvasGroup:
m_Interactable: 1
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
+--- !u!1 &225567320
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 225567321}
+ - component: {fileID: 225567323}
+ - component: {fileID: 225567322}
+ m_Layer: 5
+ m_Name: Text - Summary
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &225567321
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 225567320}
+ 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: 1109170008}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: 0, y: 315}
+ m_SizeDelta: {x: -400, y: 200}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &225567322
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 225567320}
+ 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: "\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341"
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 2f1ea7d7bb8b67740ae93a973eaf8fd9, type: 2}
+ m_sharedMaterial: {fileID: -4264381060954844368, guid: 2f1ea7d7bb8b67740ae93a973eaf8fd9, 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: 36
+ m_fontSizeBase: 36
+ 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_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 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: 1.3413997, 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!222 &225567323
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 225567320}
+ m_CullTransparentMesh: 1
--- !u!1 &243707687
GameObject:
m_ObjectHideFlags: 0
@@ -702,8 +836,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 177, y: 0}
- m_SizeDelta: {x: 354, y: 0}
+ m_AnchoredPosition: {x: 113, y: 0}
+ m_SizeDelta: {x: 226, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &366298495
MonoBehaviour:
@@ -774,6 +908,114 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_AspectMode: 2
m_AspectRatio: 1
+--- !u!1 &428712009
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 428712010}
+ - component: {fileID: 428712014}
+ - component: {fileID: 428712013}
+ - component: {fileID: 428712012}
+ - component: {fileID: 428712011}
+ m_Layer: 0
+ m_Name: RawImage (2)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &428712010
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 428712009}
+ 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: 1918837002}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 775.4286, y: -226}
+ m_SizeDelta: {x: 255.14287, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &428712011
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 428712009}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 86710e43de46f6f4bac7c8e50813a599, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_AspectMode: 1
+ m_AspectRatio: 0.7075257
+--- !u!114 &428712012
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 428712009}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreLayout: 0
+ m_MinWidth: -1
+ m_MinHeight: -1
+ m_PreferredWidth: -1
+ m_PreferredHeight: -1
+ m_FlexibleWidth: 0.8
+ m_FlexibleHeight: -1
+ m_LayoutPriority: 1
+--- !u!114 &428712013
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 428712009}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, 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_Texture: {fileID: 8400000, guid: 35e8ac38ef95d18419a5a58ab9299adf, type: 2}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &428712014
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 428712009}
+ m_CullTransparentMesh: 1
--- !u!1001 &462807103
PrefabInstance:
m_ObjectHideFlags: 0
@@ -1658,7 +1900,7 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
---- !u!1 &519420028
+--- !u!1 &511676371
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -1666,35 +1908,35 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 519420032}
- - component: {fileID: 519420031}
- - component: {fileID: 519420029}
+ - component: {fileID: 511676375}
+ - component: {fileID: 511676374}
+ - component: {fileID: 511676373}
m_Layer: 0
- m_Name: Main Camera
- m_TagString: MainCamera
+ m_Name: Postcard Camera
+ m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!81 &519420029
+--- !u!81 &511676373
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 519420028}
+ m_GameObject: {fileID: 511676371}
m_Enabled: 0
---- !u!20 &519420031
+--- !u!20 &511676374
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 519420028}
+ m_GameObject: {fileID: 511676371}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
- m_BackGroundColor: {r: 0.1981132, g: 0.1981132, b: 0.1981132, a: 0}
+ m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
@@ -1719,39 +1961,40 @@ Camera:
far clip plane: 1000
field of view: 60
orthographic: 1
- orthographic size: 100
- m_Depth: -1
+ orthographic size: 50
+ m_Depth: 0
m_CullingMask:
serializedVersion: 2
- m_Bits: 4294967295
+ m_Bits: 32
m_RenderingPath: -1
- m_TargetTexture: {fileID: 0}
+ m_TargetTexture: {fileID: 8400000, guid: 35e8ac38ef95d18419a5a58ab9299adf, type: 2}
m_TargetDisplay: 0
- m_TargetEye: 0
+ m_TargetEye: 3
m_HDR: 1
- m_AllowMSAA: 0
+ m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
- m_OcclusionCulling: 0
+ m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
---- !u!4 &519420032
+--- !u!4 &511676375
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 519420028}
+ m_GameObject: {fileID: 511676371}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: -10}
+ m_LocalPosition: {x: -567, y: 211.9, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- - {fileID: 357834774}
+ - {fileID: 1146279348}
+ - {fileID: 1109170008}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &550776837
+--- !u!1 &519420028
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -1759,37 +2002,130 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 550776838}
- - component: {fileID: 550776840}
- - component: {fileID: 550776839}
- m_Layer: 5
- m_Name: RawImage
- m_TagString: Untagged
+ - component: {fileID: 519420032}
+ - component: {fileID: 519420031}
+ - component: {fileID: 519420029}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!224 &550776838
-RectTransform:
+--- !u!81 &519420029
+AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 550776837}
- 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: 243707688}
- 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: 0, y: 0}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &550776839
-MonoBehaviour:
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 0
+--- !u!20 &519420031
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 2
+ m_BackGroundColor: {r: 0.1981132, g: 0.1981132, b: 0.1981132, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_Iso: 200
+ m_ShutterSpeed: 0.005
+ m_Aperture: 16
+ m_FocusDistance: 10
+ m_FocalLength: 50
+ m_BladeCount: 5
+ m_Curvature: {x: 2, y: 11}
+ m_BarrelClipping: 0.25
+ m_Anamorphism: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 1
+ orthographic size: 100
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 0
+ m_HDR: 1
+ m_AllowMSAA: 0
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 0
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &519420032
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519420028}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 357834774}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &550776837
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 550776838}
+ - component: {fileID: 550776840}
+ - component: {fileID: 550776839}
+ m_Layer: 5
+ m_Name: RawImage
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &550776838
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 550776837}
+ 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: 243707688}
+ 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: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &550776839
+MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
@@ -1895,6 +2231,78 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 555167253}
m_CullTransparentMesh: 1
+--- !u!1 &580836533
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 580836534}
+ - component: {fileID: 580836536}
+ - component: {fileID: 580836535}
+ m_Layer: 5
+ m_Name: RawImage
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &580836534
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 580836533}
+ 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: 1109170008}
+ 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: 166}
+ m_SizeDelta: {x: 1000, y: 1000}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &580836535
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 580836533}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, 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_Texture: {fileID: 8400000, guid: 03a5ea2ccdc34a645ae9ebab8b7f7a8d, type: 2}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &580836536
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 580836533}
+ m_CullTransparentMesh: 1
--- !u!1 &717506483
GameObject:
m_ObjectHideFlags: 0
@@ -2165,8 +2573,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 185.5, y: 0}
- m_SizeDelta: {x: 354, y: 0}
+ m_AnchoredPosition: {x: 159.4643, y: 0}
+ m_SizeDelta: {x: 226, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &830016229
MonoBehaviour:
@@ -2296,7 +2704,7 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1060364294
+--- !u!1 &1020432300
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -2304,81 +2712,45 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 1060364295}
- - component: {fileID: 1060364299}
- - component: {fileID: 1060364298}
- - component: {fileID: 1060364297}
- - component: {fileID: 1060364296}
- m_Layer: 0
- m_Name: RawImage (2)
+ - component: {fileID: 1020432301}
+ - component: {fileID: 1020432303}
+ - component: {fileID: 1020432302}
+ m_Layer: 5
+ m_Name: Text - Number
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!224 &1060364295
+--- !u!224 &1020432301
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1060364294}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_GameObject: {fileID: 1020432300}
+ 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: 830016228}
+ m_Father: {fileID: 1109170008}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 177, y: 0}
- m_SizeDelta: {x: 354, y: 0}
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: 0, y: 102}
+ m_SizeDelta: {x: 0, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1060364296
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1060364294}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 86710e43de46f6f4bac7c8e50813a599, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_AspectMode: 2
- m_AspectRatio: 1
---- !u!114 &1060364297
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1060364294}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_IgnoreLayout: 0
- m_MinWidth: -1
- m_MinHeight: -1
- m_PreferredWidth: -1
- m_PreferredHeight: -1
- m_FlexibleWidth: -1
- m_FlexibleHeight: 1
- m_LayoutPriority: 1
---- !u!114 &1060364298
+--- !u!114 &1020432302
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1060364294}
+ m_GameObject: {fileID: 1020432300}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
@@ -2389,37 +2761,207 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
- m_Texture: {fileID: 8400000, guid: 03a5ea2ccdc34a645ae9ebab8b7f7a8d, type: 2}
- m_UVRect:
+ m_text: 20250731-A-02
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
serializedVersion: 2
- x: 0
- y: 0
- width: 1
- height: 1
---- !u!222 &1060364299
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1060364294}
- m_CullTransparentMesh: 1
---- !u!1 &1076654504
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1076654508}
- - component: {fileID: 1076654507}
- - component: {fileID: 1076654506}
- - component: {fileID: 1076654505}
- m_Layer: 0
- m_Name: DisplayCamera
- m_TagString: Untagged
- m_Icon: {fileID: 0}
+ 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: 36
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 2
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_enableWordWrapping: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 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!222 &1020432303
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1020432300}
+ m_CullTransparentMesh: 1
+--- !u!1 &1060364294
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1060364295}
+ - component: {fileID: 1060364299}
+ - component: {fileID: 1060364298}
+ - component: {fileID: 1060364297}
+ - component: {fileID: 1060364296}
+ m_Layer: 0
+ m_Name: RawImage (2)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1060364295
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1060364294}
+ 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: 830016228}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 113, y: 0}
+ m_SizeDelta: {x: 226, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1060364296
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1060364294}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 86710e43de46f6f4bac7c8e50813a599, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_AspectMode: 2
+ m_AspectRatio: 1
+--- !u!114 &1060364297
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1060364294}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreLayout: 0
+ m_MinWidth: -1
+ m_MinHeight: -1
+ m_PreferredWidth: -1
+ m_PreferredHeight: -1
+ m_FlexibleWidth: -1
+ m_FlexibleHeight: 1
+ m_LayoutPriority: 1
+--- !u!114 &1060364298
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1060364294}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, 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_Texture: {fileID: 8400000, guid: 03a5ea2ccdc34a645ae9ebab8b7f7a8d, type: 2}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &1060364299
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1060364294}
+ m_CullTransparentMesh: 1
+--- !u!1 &1076654504
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1076654508}
+ - component: {fileID: 1076654507}
+ - component: {fileID: 1076654506}
+ - component: {fileID: 1076654505}
+ m_Layer: 0
+ m_Name: DisplayCamera
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
@@ -2516,6 +3058,320 @@ Transform:
- {fileID: 473271735}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1081986594
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1081986595}
+ - component: {fileID: 1081986597}
+ - component: {fileID: 1081986596}
+ m_Layer: 5
+ m_Name: RawImage
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1081986595
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1081986594}
+ 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: 1109170008}
+ 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: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1081986596
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1081986594}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, 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_Texture: {fileID: 0}
+ m_UVRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+--- !u!222 &1081986597
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1081986594}
+ m_CullTransparentMesh: 1
+--- !u!1 &1109170007
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1109170008}
+ - component: {fileID: 1109170011}
+ - component: {fileID: 1109170010}
+ - component: {fileID: 1109170009}
+ m_Layer: 5
+ m_Name: Canvas-Postcard
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1109170008
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1109170007}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1081986595}
+ - {fileID: 580836534}
+ - {fileID: 1020432301}
+ - {fileID: 225567321}
+ m_Father: {fileID: 511676375}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!114 &1109170009
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1109170007}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &1109170010
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1109170007}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+ m_PresetInfoIsWorld: 0
+--- !u!223 &1109170011
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1109170007}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 1
+ m_Camera: {fileID: 511676374}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_VertexColorAlwaysGammaSpace: 0
+ m_AdditionalShaderChannelsFlag: 25
+ m_UpdateRectTransformForStandalone: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!1 &1146279346
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1146279348}
+ - component: {fileID: 1146279349}
+ - component: {fileID: 1146279351}
+ - component: {fileID: 1146279350}
+ m_Layer: 0
+ m_Name: uploader
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1146279348
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1146279346}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 151.6937, y: 25.384659, z: 10.578705}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 511676375}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1146279349
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1146279346}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: adfb9868b2bba274fb2e49202e8dd91d, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ filePathPattern: "24070-\u5FAE\u91BA\u5927\u98EF\u5E97\u9AD8\u96C4\u7248/{time:yyyy-MM-dd}/{filename_ext}"
+ timeoutSeconds: 15
+ encode: 1
+ uploadResponseEvent:
+ m_PersistentCalls:
+ m_Calls: []
+ regionSystemName: ap-northeast-2
+ bucketName: ultracombos.project
+ onlyBucketURL: 0
+ tags: []
+--- !u!114 &1146279350
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1146279346}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 51f8f979447c54247bcba0d5441e6081, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _connection: {fileID: 11400000, guid: 403214990dd9b8f499d3a894e1575167, type: 2}
+ _oscAddress: /save
+ _dataType: 3
+ _event:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1146279351}
+ m_TargetAssemblyTypeName: SaveImage, Assembly-CSharp
+ m_MethodName: save
+ m_Mode: 5
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 1
+ _intEvent:
+ m_PersistentCalls:
+ m_Calls: []
+ _floatEvent:
+ m_PersistentCalls:
+ m_Calls: []
+ _vector2Event:
+ m_PersistentCalls:
+ m_Calls: []
+ _vector3Event:
+ m_PersistentCalls:
+ m_Calls: []
+ _vector4Event:
+ m_PersistentCalls:
+ m_Calls: []
+ _vector2IntEvent:
+ m_PersistentCalls:
+ m_Calls: []
+ _vector3IntEvent:
+ m_PersistentCalls:
+ m_Calls: []
+ _stringEvent:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 1146279351}
+ m_TargetAssemblyTypeName: SaveImage, Assembly-CSharp
+ m_MethodName: save
+ m_Mode: 0
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+--- !u!114 &1146279351
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1146279346}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 038e612e82e8abe4fb0d810610e83ce1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ uploader: {fileID: 1146279349}
+ renderTexture: {fileID: 8400000, guid: 35e8ac38ef95d18419a5a58ab9299adf, type: 2}
+ OutputFolder: output
--- !u!1 &1255800682
GameObject:
m_ObjectHideFlags: 0
@@ -3167,8 +4023,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 561.5, y: 0}
- m_SizeDelta: {x: 398.25, y: 0}
+ m_AnchoredPosition: {x: 483.39288, y: 0}
+ m_SizeDelta: {x: 254.25, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1811530096
MonoBehaviour:
@@ -3271,6 +4127,7 @@ RectTransform:
m_Children:
- {fileID: 830016228}
- {fileID: 1811530095}
+ - {fileID: 428712010}
m_Father: {fileID: 357834774}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -3409,8 +4266,9 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 038e612e82e8abe4fb0d810610e83ce1, type: 3}
m_Name:
m_EditorClassIdentifier:
+ uploader: {fileID: 0}
renderTexture: {fileID: 8400000, guid: 03a5ea2ccdc34a645ae9ebab8b7f7a8d, type: 2}
- fileName: output.png
+ OutputFolder: output
--- !u!1 &1995476942
GameObject:
m_ObjectHideFlags: 0
@@ -3519,4 +4377,5 @@ SceneRoots:
- {fileID: 519420032}
- {fileID: 1076654508}
- {fileID: 794429374}
+ - {fileID: 511676375}
- {fileID: 1010487600}
diff --git a/Assets/Scripts/SaveImage.cs b/Assets/Scripts/SaveImage.cs
index aeef1f4..b4cdd66 100644
--- a/Assets/Scripts/SaveImage.cs
+++ b/Assets/Scripts/SaveImage.cs
@@ -1,13 +1,35 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+using System.Threading.Tasks;
+using Amazon;
+using Amazon.S3;
+using Amazon.S3.Transfer;
+using Amazon.S3.Model;
+using UltraCombos.Upload;
+
+[System.Serializable]
+public class S3Tag
+{
+ public string key;
+ public string value;
+ public static implicit operator Tag(S3Tag t) => new Tag { Key = t.key, Value = t.value };
+}
public class SaveImage : MonoBehaviour
{
+
+
+ public Uploader uploader;
+ public RenderTexture renderTexture;
+ public string OutputFolder = "output";
+
+
// Start is called before the first frame update
void Start()
{
-
+ uploader = GetComponent();
+
}
// Update is called once per frame
@@ -16,19 +38,32 @@ public class SaveImage : MonoBehaviour
}
- public RenderTexture renderTexture;
- public string fileName = "output.png";
+
- public void save()
+ public void save(string filename)
{
- string timestamp = System.DateTime.Now.ToString("yyyyMMdd_HHmmss");
- string fileNameWithTimestamp = System.IO.Path.GetFileNameWithoutExtension(fileName) + "_" + timestamp + System.IO.Path.GetExtension(fileName);
+ if(string.IsNullOrEmpty(filename))
+ {
+ Debug.LogError("Filename cannot be null or empty.");
+ return;
+ }
+ Debug.Log("Saving image to: " + filename);
+
+ string timestamp = System.DateTime.Now.ToString("yyyyMMdd");
+ if (!System.IO.Directory.Exists(OutputFolder + "/" + timestamp))
+ {
+ System.IO.Directory.CreateDirectory(OutputFolder + "/" + timestamp);
+ }
+
+
+ SaveRenderTextureToPNG(renderTexture, System.IO.Path.Combine(OutputFolder + "/" + timestamp, filename));
+ Debug.Log("Image saved to " + filename);
- SaveRenderTextureToPNG(renderTexture, fileNameWithTimestamp);
- Debug.Log("Image saved to " + fileNameWithTimestamp);
// Optionally, you can also log the full path
- string fullPath = System.IO.Path.Combine(Application.persistentDataPath, fileNameWithTimestamp);
- Debug.Log("Full path: " + fullPath);
+ string fullPath = System.IO.Path.Combine(OutputFolder + "/" + timestamp + "/", filename);
+ Debug.Log("path: " + fullPath);
+
+ upload(fullPath);
}
void SaveRenderTextureToPNG(RenderTexture rt, string filePath)
@@ -43,7 +78,32 @@ public class SaveImage : MonoBehaviour
byte[] bytes = tex.EncodeToPNG();
System.IO.File.WriteAllBytes(filePath, bytes);
+ Debug.Log("Saved RenderTexture to PNG at " + filePath+ " with size: " + bytes.Length + " bytes");
+
RenderTexture.active = currentRT;
Destroy(tex);
}
-}
+
+ void upload(string filename){
+ if (uploader != null)
+ {
+ uploader.Upload(filename, (response) =>
+ {
+ if (response.success)
+ {
+ Debug.Log("Upload successful: " + response);
+ }
+ else
+ {
+ Debug.LogError("Upload failed: " + response);
+ }
+ });
+ }
+ else
+ {
+ Debug.LogError("Uploader is not assigned.");
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/Assets/Textures/Postcard Texture.renderTexture b/Assets/Textures/Postcard Texture.renderTexture
new file mode 100644
index 0000000..1de2e55
--- /dev/null
+++ b/Assets/Textures/Postcard Texture.renderTexture
@@ -0,0 +1,40 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!84 &8400000
+RenderTexture:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Postcard Texture
+ m_ImageContentsHash:
+ serializedVersion: 2
+ Hash: 00000000000000000000000000000000
+ m_ForcedFallbackFormat: 4
+ m_DownscaleFallback: 0
+ m_IsAlphaChannelOptional: 0
+ serializedVersion: 5
+ m_Width: 1241
+ m_Height: 1754
+ m_AntiAliasing: 1
+ m_MipCount: -1
+ m_DepthStencilFormat: 94
+ m_ColorFormat: 8
+ m_MipMap: 0
+ m_GenerateMips: 1
+ m_SRGB: 0
+ m_UseDynamicScale: 0
+ m_BindMS: 0
+ m_EnableCompatibleFormat: 1
+ m_EnableRandomWrite: 0
+ m_TextureSettings:
+ serializedVersion: 2
+ m_FilterMode: 1
+ m_Aniso: 0
+ m_MipBias: 0
+ m_WrapU: 1
+ m_WrapV: 1
+ m_WrapW: 1
+ m_Dimension: 2
+ m_VolumeDepth: 1
+ m_ShadowSamplingMode: 2
diff --git a/Assets/Textures/Postcard Texture.renderTexture.meta b/Assets/Textures/Postcard Texture.renderTexture.meta
new file mode 100644
index 0000000..1b9d554
--- /dev/null
+++ b/Assets/Textures/Postcard Texture.renderTexture.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 35e8ac38ef95d18419a5a58ab9299adf
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 8400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/packages.config b/Assets/packages.config
new file mode 100644
index 0000000..3299dfc
--- /dev/null
+++ b/Assets/packages.config
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/Assets/packages.config.meta b/Assets/packages.config.meta
new file mode 100644
index 0000000..0af9052
--- /dev/null
+++ b/Assets/packages.config.meta
@@ -0,0 +1,23 @@
+fileFormatVersion: 2
+guid: b35aaee7bdba19747814754a04f98e30
+labels:
+- NuGetForUnity
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 1
+ settings: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/.github/workflows/publish_to_verdaccio.yml b/Packages/com.ultracombos.upload-aws-s3-main/.github/workflows/publish_to_verdaccio.yml
new file mode 100644
index 0000000..77f2c8c
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/.github/workflows/publish_to_verdaccio.yml
@@ -0,0 +1,23 @@
+# https://www.notion.so/ultracombos/184580d56c5f4b30b7777fd241b41b48
+name: Publish to Verdaccio
+on: push
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ lfs: true
+ - uses: EndBug/version-check@v2
+ id: check
+ with:
+ diff-search: true
+ token: ${{ secrets.GITHUB_TOKEN }}
+ - uses: actions/setup-node@v3
+ if: steps.check.outputs.changed == 'true'
+ with:
+ always-auth: true
+ node-version: 16
+ - run: echo "//verdaccio.ultracombos.net/:_authToken=${{ secrets.VERDACCIO_NPM_AUTH_TOKEN }}" > ~/.npmrc
+ - run: yarn publish
+ if: steps.check.outputs.changed == 'true'
\ No newline at end of file
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/Editor.meta b/Packages/com.ultracombos.upload-aws-s3-main/Editor.meta
new file mode 100644
index 0000000..144084d
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b4adca434b03a6948bed1fd097b798c4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/Editor/AwsS3UploaderEditor.cs b/Packages/com.ultracombos.upload-aws-s3-main/Editor/AwsS3UploaderEditor.cs
new file mode 100644
index 0000000..ded7fcd
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/Editor/AwsS3UploaderEditor.cs
@@ -0,0 +1,56 @@
+using Amazon;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq.Expressions;
+using System.Reflection;
+using System.Text.RegularExpressions;
+using UltraCombos.Upload;
+using UnityEditor;
+using UnityEngine;
+namespace UltraCombos.Upload
+{
+ [CustomEditor(typeof(AwsS3Uploader))]
+ public class AwsS3UploaderEditor : UploaderEditor
+ {
+ SerializedProperty regionSystemName;
+ List regions = new List();
+ string[] regionNames;
+ string[] regionSystemNames;
+ /*
+ protected override void GetURLInternal(string filePath, string filePathWithTag, out string url_display, out string url)
+ {
+ var uploader = target as AwsS3Uploader;
+ url_display = uploader.GetURL2(filePathWithTag, false);
+ url = uploader.GetURL2( filePath, true);
+ }
+ */
+ protected override void OnEnable()
+ {
+ base.OnEnable();
+ FindProperty(() => regionSystemName);
+
+ regions.AddRange(RegionEndpoint.EnumerableAllRegions);
+ regionNames = new string[regions.Count];
+ regionSystemNames = new string[regions.Count];
+ for (int i = 0; i < regionNames.Length; ++i)
+ {
+ regionNames[i] = regions[i].DisplayName;
+ regionSystemNames[i] = regions[i].SystemName;
+ }
+ }
+ protected override void OnInspectorGUIBody()
+ {
+ //Region
+
+ var choiceIndex = 0;
+ for (int i = 0; i < regionNames.Length; ++i)
+ {
+ if (regionSystemName.stringValue == regionSystemNames[i])
+ choiceIndex = i;
+ }
+ choiceIndex = EditorGUILayout.Popup("Region", choiceIndex, regionNames);
+ regionSystemName.stringValue = regionSystemNames[choiceIndex];
+ }
+ }
+}
\ No newline at end of file
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/Editor/AwsS3UploaderEditor.cs.meta b/Packages/com.ultracombos.upload-aws-s3-main/Editor/AwsS3UploaderEditor.cs.meta
new file mode 100644
index 0000000..184d7aa
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/Editor/AwsS3UploaderEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: efc2a59b714235447accafdeefef2541
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/Editor/UltraCombos.AwsS3Uploader.Editor.asmdef b/Packages/com.ultracombos.upload-aws-s3-main/Editor/UltraCombos.AwsS3Uploader.Editor.asmdef
new file mode 100644
index 0000000..ebf9137
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/Editor/UltraCombos.AwsS3Uploader.Editor.asmdef
@@ -0,0 +1,19 @@
+{
+ "name": "UltraCombos.AwsS3Uploader.Editor",
+ "references": [
+ "GUID:39b5c55a81e192543aa30a689d5a3992",
+ "GUID:8f470c8270d70f44e95578f473b05009",
+ "GUID:56859cf09e0a6584c9f5fba33ee63c15"
+ ],
+ "includePlatforms": [
+ "Editor"
+ ],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/Editor/UltraCombos.AwsS3Uploader.Editor.asmdef.meta b/Packages/com.ultracombos.upload-aws-s3-main/Editor/UltraCombos.AwsS3Uploader.Editor.asmdef.meta
new file mode 100644
index 0000000..9b79863
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/Editor/UltraCombos.AwsS3Uploader.Editor.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 45ee2d944a3a98147973bc8039d4dbf7
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/README.md b/Packages/com.ultracombos.upload-aws-s3-main/README.md
new file mode 100644
index 0000000..01e9632
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/README.md
@@ -0,0 +1 @@
+# com.ultracombos.aws-s3-uploader
\ No newline at end of file
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/README.md.meta b/Packages/com.ultracombos.upload-aws-s3-main/README.md.meta
new file mode 100644
index 0000000..91c03f5
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/README.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: fa29bd3b93de7c943b659d65b11ab255
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/Runtime.meta b/Packages/com.ultracombos.upload-aws-s3-main/Runtime.meta
new file mode 100644
index 0000000..caf2620
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/Runtime.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f4b6bec11b354d54b870b769d3bae1bd
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/Runtime/AwsS3Uploader.cs b/Packages/com.ultracombos.upload-aws-s3-main/Runtime/AwsS3Uploader.cs
new file mode 100644
index 0000000..a71a7a0
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/Runtime/AwsS3Uploader.cs
@@ -0,0 +1,134 @@
+using UnityEngine;
+using System;
+using System.IO;
+using System.Threading.Tasks;
+using System.Threading;
+using Amazon.S3;
+using Amazon;
+using Amazon.S3.Transfer;
+using Amazon.S3.Model;
+using System.Collections.Generic;
+
+namespace UltraCombos.Upload
+{
+ [System.Serializable]
+ public class S3Tag
+ {
+ public string key;
+ public string value;
+ public static implicit operator Tag(S3Tag t) => new Tag { Key = t.key, Value = t.value };
+ }
+
+ public class AwsS3Uploader : Uploader
+ {
+ [SerializeField]
+ private string regionSystemName = "ap-northeast-2";
+
+ public string bucketName = "ultracombos.project";
+
+ public bool onlyBucketURL = false;
+ public List tags=new List();
+ IAmazonS3 s3Client;
+ #region Monobehaviour
+ void Start()
+ {
+ s3Client = new AmazonS3Client(RegionEndpoint.GetBySystemName(regionSystemName));
+ }
+ protected override void OnDestroy()
+ {
+ base.OnDestroy();
+ s3Client?.Dispose();
+ }
+ #endregion
+
+ protected List GetTagSet()
+ {
+ List tagSet = new List();
+ foreach (var t in tags)
+ tagSet.Add(t);
+ return tagSet;
+ }
+
+ #region Upload Protected
+
+ protected override async Task Upload(byte[] byteData, string remoteFilePath)
+ {
+ MemoryStream ms = new MemoryStream();
+ ms.Write(byteData, 0, byteData.Length);
+ ms.Seek(0, SeekOrigin.Begin);
+
+ var request = new TransferUtilityUploadRequest()
+ {
+ BucketName = bucketName,
+ InputStream = ms,
+ StorageClass = S3StorageClass.Standard,
+ Key = remoteFilePath,
+ CannedACL = S3CannedACL.PublicRead,
+ TagSet = GetTagSet(),
+ };
+ return await UploadAsync(request);
+ }
+ protected override async Task Upload(string filePath, string remoteFilePath)
+ {
+ Debug.Log("Uploading file: " + filePath+ " to " + remoteFilePath);
+
+ var request = new TransferUtilityUploadRequest()
+ {
+ BucketName = bucketName,
+ FilePath = filePath,
+ StorageClass = S3StorageClass.Standard,
+ Key = remoteFilePath,
+ CannedACL = S3CannedACL.PublicRead,
+ TagSet = GetTagSet(),
+ };
+ return await UploadAsync(request);
+ }
+ public override string GetHostURL()// (string remoteFilePath, bool escape = true)
+ {
+ if (onlyBucketURL)
+ return $"http://{EscapeURL(bucketName)}";
+ else
+ return $"https://s3.{regionSystemName}.amazonaws.com/{EscapeURL(bucketName)}";
+ }
+ private async Task UploadAsync(TransferUtilityUploadRequest request)
+ {
+ Debug.Log($"Uploading to S3: {request.BucketName}/{request.Key}");
+ if (s3Client == null)
+ {
+ Debug.LogError("S3 client is not initialized.");
+ return $"{ERR_MSG} S3 client is not initialized.";
+ }
+
+ var timeout_cts = new CancellationTokenSource(TimeSpan.FromSeconds(timeoutSeconds));
+ var linked_cts = CancellationTokenSource.CreateLinkedTokenSource(timeout_cts.Token, cts.Token);
+ TransferUtility fileTransferUtility = null;
+ try
+ {
+ fileTransferUtility = new TransferUtility(s3Client);
+ await fileTransferUtility.UploadAsync(request, linked_cts.Token);
+ return $"{GetHostURL()}/{EscapeURL(request.Key)}";
+ }
+ catch (Exception e)
+ {
+ Debug.LogError($"Upload failed: {e.Message}\n{e.StackTrace}");
+ if(timeout_cts.IsCancellationRequested)
+ return $"{ERR_MSG} The operation has timed out.";
+ if (cts.IsCancellationRequested)
+ return $"{ERR_MSG} AwsS3Uploader was disposed.";
+ return $"{ERR_MSG} {e.Message}\n{e.StackTrace}";
+ }
+ finally
+ {
+ try { request?.InputStream.Close(); } catch {}
+ try { request?.InputStream.Dispose(); } catch {}
+ try { linked_cts?.Dispose(); } catch {}
+ try { timeout_cts?.Dispose(); } catch {}
+ try { fileTransferUtility?.Dispose(); } catch {}
+ }
+ }
+ #endregion
+ }
+
+
+}
+
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/Runtime/AwsS3Uploader.cs.meta b/Packages/com.ultracombos.upload-aws-s3-main/Runtime/AwsS3Uploader.cs.meta
new file mode 100644
index 0000000..2aeb917
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/Runtime/AwsS3Uploader.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: adfb9868b2bba274fb2e49202e8dd91d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/Runtime/UltraCombos.UploadAwsS3.Runtime.asmdef b/Packages/com.ultracombos.upload-aws-s3-main/Runtime/UltraCombos.UploadAwsS3.Runtime.asmdef
new file mode 100644
index 0000000..6285095
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/Runtime/UltraCombos.UploadAwsS3.Runtime.asmdef
@@ -0,0 +1,16 @@
+{
+ "name": "UltraCombos.AwsS3Uploader.Runtime",
+ "rootNamespace": "",
+ "references": [
+ "GUID:39b5c55a81e192543aa30a689d5a3992"
+ ],
+ "includePlatforms": [],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/Runtime/UltraCombos.UploadAwsS3.Runtime.asmdef.meta b/Packages/com.ultracombos.upload-aws-s3-main/Runtime/UltraCombos.UploadAwsS3.Runtime.asmdef.meta
new file mode 100644
index 0000000..9428e3e
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/Runtime/UltraCombos.UploadAwsS3.Runtime.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 56859cf09e0a6584c9f5fba33ee63c15
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/package.json b/Packages/com.ultracombos.upload-aws-s3-main/package.json
new file mode 100644
index 0000000..d83fdf4
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "com.ultracombos.upload-aws-s3",
+ "displayName": "Upload AWS S3",
+ "version": "1.0.22",
+ "unity": "2019.3",
+ "description": "AWS S3 Uploader for Unity.",
+ "keywords": [],
+ "category": "",
+ "type": "tool",
+ "publishConfig": {
+ "registry": "https://verdaccio.ultracombos.net"
+ },
+ "author": {
+ "name": "Ultra Combos Co., Ltd.",
+ "email": "tech@ultracombos.com",
+ "url": "https://ultracombos.com"
+ },
+ "dependencies": {
+ "com.ultracombos.upload": "1.0.24",
+ "org.nuget.awssdk.s3": "3.7.0"
+ }
+}
\ No newline at end of file
diff --git a/Packages/com.ultracombos.upload-aws-s3-main/package.json.meta b/Packages/com.ultracombos.upload-aws-s3-main/package.json.meta
new file mode 100644
index 0000000..553b0b6
--- /dev/null
+++ b/Packages/com.ultracombos.upload-aws-s3-main/package.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 7f1d1fd9b5ef4d34591d30f534cf8b20
+PackageManifestImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/manifest.json b/Packages/manifest.json
index 5ced5f6..8c4484a 100644
--- a/Packages/manifest.json
+++ b/Packages/manifest.json
@@ -1,6 +1,8 @@
{
"dependencies": {
+ "com.github-glitchenzo.nugetforunity": "4.5.0",
"com.ultracombos.control-panel": "https://github.com/UltraCombos/com.ultracombos.control-panel.git",
+ "com.ultracombos.upload": "https://github.com/UltraCombos/com.ultracombos.upload.git",
"com.unity.collab-proxy": "2.8.2",
"com.unity.feature.2d": "2.0.1",
"com.unity.ide.rider": "3.0.36",
@@ -13,6 +15,7 @@
"com.unity.visualscripting": "1.9.4",
"jp.keijiro.klak.spout": "https://github.com/UltraCombos/KlakSpout.git?path=Packages/jp.keijiro.klak.spout#main",
"jp.keijiro.osc-jack": "2.0.0",
+ "org.nuget.awssdk.s3": "4.0.6",
"com.unity.modules.ai": "1.0.0",
"com.unity.modules.androidjni": "1.0.0",
"com.unity.modules.animation": "1.0.0",
@@ -59,6 +62,20 @@
"scopes": [
"com.ultracombos"
]
+ },
+ {
+ "name": "package.openupm.com",
+ "url": "https://package.openupm.com",
+ "scopes": [
+ "com.github-glitchenzo.nugetforunity"
+ ]
+ },
+ {
+ "name": "Unity NuGet",
+ "url": "https://unitynuget-registry.openupm.com",
+ "scopes": [
+ "org.nuget"
+ ]
}
]
}
diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json
index 8ceecc5..328a1eb 100644
--- a/Packages/packages-lock.json
+++ b/Packages/packages-lock.json
@@ -1,5 +1,12 @@
{
"dependencies": {
+ "com.github-glitchenzo.nugetforunity": {
+ "version": "4.5.0",
+ "depth": 0,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://package.openupm.com"
+ },
"com.ultracombos.control-panel": {
"version": "https://github.com/UltraCombos/com.ultracombos.control-panel.git",
"depth": 0,
@@ -9,6 +16,22 @@
},
"hash": "70a6c25d47b77fb145bc16eafd27b22c8610dcee"
},
+ "com.ultracombos.upload": {
+ "version": "https://github.com/UltraCombos/com.ultracombos.upload.git",
+ "depth": 0,
+ "source": "git",
+ "dependencies": {},
+ "hash": "e8353d176da003c983faba6c4408b4519038a141"
+ },
+ "com.ultracombos.upload-aws-s3": {
+ "version": "file:com.ultracombos.upload-aws-s3-main",
+ "depth": 0,
+ "source": "embedded",
+ "dependencies": {
+ "com.ultracombos.upload": "1.0.24",
+ "org.nuget.awssdk.s3": "3.7.0"
+ }
+ },
"com.unity.2d.animation": {
"version": "9.2.0",
"depth": 1,
@@ -273,6 +296,102 @@
"dependencies": {},
"url": "https://registry.npmjs.com"
},
+ "org.nuget.awssdk.core": {
+ "version": "4.0.0-16",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {
+ "org.nuget.microsoft.bcl.asyncinterfaces": "8.0.0",
+ "org.nuget.system.buffers": "4.5.1",
+ "org.nuget.system.memory": "4.5.5",
+ "org.nuget.system.text.json": "8.0.5"
+ },
+ "url": "https://unitynuget-registry.openupm.com"
+ },
+ "org.nuget.awssdk.s3": {
+ "version": "4.0.6",
+ "depth": 0,
+ "source": "registry",
+ "dependencies": {
+ "org.nuget.awssdk.core": "4.0.0-16"
+ },
+ "url": "https://unitynuget-registry.openupm.com"
+ },
+ "org.nuget.microsoft.bcl.asyncinterfaces": {
+ "version": "8.0.0",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {
+ "org.nuget.system.threading.tasks.extensions": "4.5.4"
+ },
+ "url": "https://unitynuget-registry.openupm.com"
+ },
+ "org.nuget.system.buffers": {
+ "version": "4.5.1",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://unitynuget-registry.openupm.com"
+ },
+ "org.nuget.system.memory": {
+ "version": "4.5.5",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {
+ "org.nuget.system.buffers": "4.5.1",
+ "org.nuget.system.numerics.vectors": "4.4.0",
+ "org.nuget.system.runtime.compilerservices.unsafe": "4.5.3"
+ },
+ "url": "https://unitynuget-registry.openupm.com"
+ },
+ "org.nuget.system.numerics.vectors": {
+ "version": "4.4.0",
+ "depth": 3,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://unitynuget-registry.openupm.com"
+ },
+ "org.nuget.system.runtime.compilerservices.unsafe": {
+ "version": "6.0.0",
+ "depth": 3,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://unitynuget-registry.openupm.com"
+ },
+ "org.nuget.system.text.encodings.web": {
+ "version": "8.0.0",
+ "depth": 3,
+ "source": "registry",
+ "dependencies": {
+ "org.nuget.system.buffers": "4.5.1",
+ "org.nuget.system.memory": "4.5.5",
+ "org.nuget.system.runtime.compilerservices.unsafe": "6.0.0"
+ },
+ "url": "https://unitynuget-registry.openupm.com"
+ },
+ "org.nuget.system.text.json": {
+ "version": "8.0.5",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {
+ "org.nuget.microsoft.bcl.asyncinterfaces": "8.0.0",
+ "org.nuget.system.text.encodings.web": "8.0.0",
+ "org.nuget.system.buffers": "4.5.1",
+ "org.nuget.system.memory": "4.5.5",
+ "org.nuget.system.runtime.compilerservices.unsafe": "6.0.0",
+ "org.nuget.system.threading.tasks.extensions": "4.5.4"
+ },
+ "url": "https://unitynuget-registry.openupm.com"
+ },
+ "org.nuget.system.threading.tasks.extensions": {
+ "version": "4.5.4",
+ "depth": 3,
+ "source": "registry",
+ "dependencies": {
+ "org.nuget.system.runtime.compilerservices.unsafe": "4.5.3"
+ },
+ "url": "https://unitynuget-registry.openupm.com"
+ },
"com.unity.modules.ai": {
"version": "1.0.0",
"depth": 0,
diff --git a/ProjectSettings/PackageManagerSettings.asset b/ProjectSettings/PackageManagerSettings.asset
index dc8b248..fdd050a 100644
--- a/ProjectSettings/PackageManagerSettings.asset
+++ b/ProjectSettings/PackageManagerSettings.asset
@@ -42,7 +42,23 @@ MonoBehaviour:
m_IsDefault: 0
m_Capabilities: 0
m_ConfigSource: 4
- m_UserSelectedRegistryName: Ultra Combos
+ - m_Id: scoped:project:package.openupm.com
+ m_Name: package.openupm.com
+ m_Url: https://package.openupm.com
+ m_Scopes:
+ - com.github-glitchenzo.nugetforunity
+ m_IsDefault: 0
+ m_Capabilities: 0
+ m_ConfigSource: 4
+ - m_Id: scoped:project:Unity NuGet
+ m_Name: Unity NuGet
+ m_Url: https://unitynuget-registry.openupm.com
+ m_Scopes:
+ - org.nuget
+ m_IsDefault: 0
+ m_Capabilities: 0
+ m_ConfigSource: 4
+ m_UserSelectedRegistryName: Unity NuGet
m_UserAddingNewScopedRegistry: 0
m_RegistryInfoDraft:
m_Modified: 0
diff --git a/SavedImage.png b/SavedImage.png
deleted file mode 100644
index 24ed292..0000000
Binary files a/SavedImage.png and /dev/null differ
diff --git a/output_20250721_174014.png b/output_20250721_174014.png
deleted file mode 100644
index 915a86c..0000000
Binary files a/output_20250721_174014.png and /dev/null differ
diff --git a/output_20250721_174124.png b/output_20250721_174124.png
deleted file mode 100644
index 41a799e..0000000
Binary files a/output_20250721_174124.png and /dev/null differ
diff --git a/output_20250721_174320.png b/output_20250721_174320.png
deleted file mode 100644
index 31ee3ae..0000000
Binary files a/output_20250721_174320.png and /dev/null differ