init commit

main
胡宇飞 2024-02-06 19:50:04 +08:00
commit 1bf6ce0f8f
138 changed files with 21509 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.DS_Store

8
Editor.meta Normal file
View File

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

8
Editor/UIKitEditor.meta Normal file
View File

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

View File

@ -0,0 +1,13 @@
namespace Guru.Editor
{
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GuruUIKitManager
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 83dd96b84b388468cb4495456777eb88
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

8
README.md Normal file
View File

@ -0,0 +1,8 @@
# Guru UI 模版
## Version: 0.0.1

3
README.md.meta Normal file
View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 6ed3e7feb6b345509729043f53362200
timeCreated: 1705375326

8
Runtime.meta Normal file
View File

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

3
Runtime/Font.meta Normal file
View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8e615bcd21ad42649f3a3d925930c77c
timeCreated: 1704872501

8
Runtime/Font/Arial.meta Normal file
View File

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

Binary file not shown.

View File

@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: ce62a292e655c479ebcb55b0d2096d06
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Arial
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -0,0 +1,24 @@
fileFormatVersion: 2
guid: 01108c44563ae463a890f962b34502b7
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Encode Sans Expanded
fallbackFontReferences:
- {fileID: 12800000, guid: 1b3d1f322cd5a4cb7b6da5df4dbcae91, type: 3}
- {fileID: 12800000, guid: e0747024c7d2c4bf281295de30056948, type: 3}
- {fileID: 12800000, guid: eb1c0f8b448344b4e9e78f1718855edf, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,31 @@
fileFormatVersion: 2
guid: bf74045e2ab2f457891455b718ed77ba
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Encode Sans Expanded
fallbackFontReferences:
- {fileID: 12800000, guid: 688b4b07b213545a8b732406301800b4, type: 3}
- {fileID: 12800000, guid: 3ef596c41d454424a985096955aae626, type: 3}
- {fileID: 12800000, guid: 7ed78d5bd4a544e58b98ec83953e5972, type: 3}
- {fileID: 12800000, guid: e43a0cf3f5283438fa24bb366b16432a, type: 3}
- {fileID: 12800000, guid: 1b3d1f322cd5a4cb7b6da5df4dbcae91, type: 3}
- {fileID: 12800000, guid: e0747024c7d2c4bf281295de30056948, type: 3}
- {fileID: 12800000, guid: 17e515bef00ab406bb90433be24950b8, type: 3}
- {fileID: 12800000, guid: a670730b6abd2459cbe52e05e9c5959f, type: 3}
- {fileID: 12800000, guid: 01108c44563ae463a890f962b34502b7, type: 3}
- {fileID: 12800000, guid: eb1c0f8b448344b4e9e78f1718855edf, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,26 @@
fileFormatVersion: 2
guid: a670730b6abd2459cbe52e05e9c5959f
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Encode Sans Expanded
fallbackFontReferences:
- {fileID: 12800000, guid: e43a0cf3f5283438fa24bb366b16432a, type: 3}
- {fileID: 12800000, guid: 1b3d1f322cd5a4cb7b6da5df4dbcae91, type: 3}
- {fileID: 12800000, guid: e0747024c7d2c4bf281295de30056948, type: 3}
- {fileID: 12800000, guid: 01108c44563ae463a890f962b34502b7, type: 3}
- {fileID: 12800000, guid: eb1c0f8b448344b4e9e78f1718855edf, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,29 @@
fileFormatVersion: 2
guid: 3ef596c41d454424a985096955aae626
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Encode Sans Expanded
fallbackFontReferences:
- {fileID: 12800000, guid: 688b4b07b213545a8b732406301800b4, type: 3}
- {fileID: 12800000, guid: e43a0cf3f5283438fa24bb366b16432a, type: 3}
- {fileID: 12800000, guid: 1b3d1f322cd5a4cb7b6da5df4dbcae91, type: 3}
- {fileID: 12800000, guid: e0747024c7d2c4bf281295de30056948, type: 3}
- {fileID: 12800000, guid: 17e515bef00ab406bb90433be24950b8, type: 3}
- {fileID: 12800000, guid: a670730b6abd2459cbe52e05e9c5959f, type: 3}
- {fileID: 12800000, guid: 01108c44563ae463a890f962b34502b7, type: 3}
- {fileID: 12800000, guid: eb1c0f8b448344b4e9e78f1718855edf, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,27 @@
fileFormatVersion: 2
guid: 17e515bef00ab406bb90433be24950b8
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Encode Sans Expanded
fallbackFontReferences:
- {fileID: 12800000, guid: e43a0cf3f5283438fa24bb366b16432a, type: 3}
- {fileID: 12800000, guid: 1b3d1f322cd5a4cb7b6da5df4dbcae91, type: 3}
- {fileID: 12800000, guid: e0747024c7d2c4bf281295de30056948, type: 3}
- {fileID: 12800000, guid: a670730b6abd2459cbe52e05e9c5959f, type: 3}
- {fileID: 12800000, guid: 01108c44563ae463a890f962b34502b7, type: 3}
- {fileID: 12800000, guid: eb1c0f8b448344b4e9e78f1718855edf, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,28 @@
fileFormatVersion: 2
guid: 688b4b07b213545a8b732406301800b4
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Encode Sans Expanded
fallbackFontReferences:
- {fileID: 12800000, guid: e43a0cf3f5283438fa24bb366b16432a, type: 3}
- {fileID: 12800000, guid: 1b3d1f322cd5a4cb7b6da5df4dbcae91, type: 3}
- {fileID: 12800000, guid: e0747024c7d2c4bf281295de30056948, type: 3}
- {fileID: 12800000, guid: 17e515bef00ab406bb90433be24950b8, type: 3}
- {fileID: 12800000, guid: a670730b6abd2459cbe52e05e9c5959f, type: 3}
- {fileID: 12800000, guid: 01108c44563ae463a890f962b34502b7, type: 3}
- {fileID: 12800000, guid: eb1c0f8b448344b4e9e78f1718855edf, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: e0747024c7d2c4bf281295de30056948
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Encode Sans Expanded
fallbackFontReferences:
- {fileID: 12800000, guid: 1b3d1f322cd5a4cb7b6da5df4dbcae91, type: 3}
- {fileID: 12800000, guid: eb1c0f8b448344b4e9e78f1718855edf, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,30 @@
fileFormatVersion: 2
guid: 7ed78d5bd4a544e58b98ec83953e5972
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Encode Sans Expanded
fallbackFontReferences:
- {fileID: 12800000, guid: 688b4b07b213545a8b732406301800b4, type: 3}
- {fileID: 12800000, guid: 3ef596c41d454424a985096955aae626, type: 3}
- {fileID: 12800000, guid: e43a0cf3f5283438fa24bb366b16432a, type: 3}
- {fileID: 12800000, guid: 1b3d1f322cd5a4cb7b6da5df4dbcae91, type: 3}
- {fileID: 12800000, guid: e0747024c7d2c4bf281295de30056948, type: 3}
- {fileID: 12800000, guid: 17e515bef00ab406bb90433be24950b8, type: 3}
- {fileID: 12800000, guid: a670730b6abd2459cbe52e05e9c5959f, type: 3}
- {fileID: 12800000, guid: 01108c44563ae463a890f962b34502b7, type: 3}
- {fileID: 12800000, guid: eb1c0f8b448344b4e9e78f1718855edf, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,25 @@
fileFormatVersion: 2
guid: e43a0cf3f5283438fa24bb366b16432a
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Encode Sans Expanded
fallbackFontReferences:
- {fileID: 12800000, guid: 1b3d1f322cd5a4cb7b6da5df4dbcae91, type: 3}
- {fileID: 12800000, guid: e0747024c7d2c4bf281295de30056948, type: 3}
- {fileID: 12800000, guid: 01108c44563ae463a890f962b34502b7, type: 3}
- {fileID: 12800000, guid: eb1c0f8b448344b4e9e78f1718855edf, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -0,0 +1,289 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!28 &-3218021044117043789
Texture2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: EncodeSansExpanded-Bold Atlas
m_ImageContentsHash:
serializedVersion: 2
Hash: 00000000000000000000000000000000
m_ForcedFallbackFormat: 4
m_DownscaleFallback: 0
m_IsAlphaChannelOptional: 0
serializedVersion: 2
m_Width: 0
m_Height: 0
m_CompleteImageSize: 0
m_MipsStripped: 0
m_TextureFormat: 1
m_MipCount: 1
m_IsReadable: 1
m_IsPreProcessed: 0
m_IgnoreMasterTextureLimit: 0
m_StreamingMipmaps: 0
m_StreamingMipmapsPriority: 0
m_VTOnly: 0
m_AlphaIsTransparency: 0
m_ImageCount: 1
m_TextureDimension: 2
m_TextureSettings:
serializedVersion: 2
m_FilterMode: 1
m_Aniso: 1
m_MipBias: 0
m_WrapU: 0
m_WrapV: 0
m_WrapW: 0
m_LightmapFormat: 0
m_ColorSpace: 0
m_PlatformBlob:
image data: 0
_typelessdata:
m_StreamData:
serializedVersion: 2
offset: 0
size: 0
path:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3}
m_Name: EncodeSansExpanded-Bold SDF
m_EditorClassIdentifier:
hashCode: -1095770185
material: {fileID: 0}
materialHashCode: 138061367
m_Version: 1.1.0
m_SourceFontFileGUID: bf74045e2ab2f457891455b718ed77ba
m_SourceFontFile_EditorRef: {fileID: 0}
m_SourceFontFile: {fileID: 12800000, guid: bf74045e2ab2f457891455b718ed77ba, type: 3}
m_AtlasPopulationMode: 1
m_FaceInfo:
m_FaceIndex: 0
m_FamilyName: Encode Sans Expanded
m_StyleName: Bold
m_PointSize: 90
m_Scale: 1
m_UnitsPerEM: 0
m_LineHeight: 112.50001
m_AscentLine: 92.700005
m_CapLine: 67
m_MeanLine: 49
m_Baseline: 0
m_DescentLine: -19.800001
m_SuperscriptOffset: 92.700005
m_SuperscriptSize: 0.5
m_SubscriptOffset: -19.800001
m_SubscriptSize: 0.5
m_UnderlineOffset: -4.5
m_UnderlineThickness: 2.25
m_StrikethroughOffset: 19.6
m_StrikethroughThickness: 2.25
m_TabWidth: 26
m_GlyphTable: []
m_CharacterTable: []
m_AtlasTextures:
- {fileID: -3218021044117043789}
m_AtlasTextureIndex: 0
m_IsMultiAtlasTexturesEnabled: 0
m_ClearDynamicDataOnBuild: 1
m_UsedGlyphRects: []
m_FreeGlyphRects:
- m_X: 0
m_Y: 0
m_Width: 1023
m_Height: 1023
m_fontInfo:
Name:
PointSize: 0
Scale: 0
CharacterCount: 0
LineHeight: 0
Baseline: 0
Ascender: 0
CapHeight: 0
Descender: 0
CenterLine: 0
SuperscriptOffset: 0
SubscriptOffset: 0
SubSize: 0
Underline: 0
UnderlineThickness: 0
strikethrough: 0
strikethroughThickness: 0
TabWidth: 0
Padding: 0
AtlasWidth: 0
AtlasHeight: 0
atlas: {fileID: 0}
m_AtlasWidth: 1024
m_AtlasHeight: 1024
m_AtlasPadding: 9
m_AtlasRenderMode: 4165
m_glyphInfoList: []
m_KerningTable:
kerningPairs: []
m_FontFeatureTable:
m_GlyphPairAdjustmentRecords: []
fallbackFontAssets: []
m_FallbackFontAssetTable:
- {fileID: 11400000, guid: c76c74f50c1dd40fcb6cf1427679cb46, type: 2}
m_CreationSettings:
sourceFontFileName:
sourceFontFileGUID: bf74045e2ab2f457891455b718ed77ba
pointSizeSamplingMode: 0
pointSize: 90
padding: 9
packingMode: 0
atlasWidth: 1024
atlasHeight: 1024
characterSetSelectionMode: 7
characterSequence:
referencedFontAssetGUID:
referencedTextAssetGUID:
fontStyle: 0
fontStyleModifier: 0
renderMode: 4165
includeFontFeatures: 0
m_FontWeightTable:
- regularTypeface: {fileID: 0}
italicTypeface: {fileID: 0}
- regularTypeface: {fileID: 0}
italicTypeface: {fileID: 0}
- regularTypeface: {fileID: 0}
italicTypeface: {fileID: 0}
- regularTypeface: {fileID: 0}
italicTypeface: {fileID: 0}
- regularTypeface: {fileID: 0}
italicTypeface: {fileID: 0}
- regularTypeface: {fileID: 0}
italicTypeface: {fileID: 0}
- regularTypeface: {fileID: 0}
italicTypeface: {fileID: 0}
- regularTypeface: {fileID: 0}
italicTypeface: {fileID: 0}
- regularTypeface: {fileID: 0}
italicTypeface: {fileID: 0}
- regularTypeface: {fileID: 0}
italicTypeface: {fileID: 0}
fontWeights: []
normalStyle: 0
normalSpacingOffset: 0
boldStyle: 0.75
boldSpacing: 7
italicStyle: 35
tabSize: 10
--- !u!21 &6524006377389618200
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: EncodeSansExpanded-Bold Atlas Material
m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3}
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Cube:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _FaceTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: -3218021044117043789}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _Ambient: 0.5
- _Bevel: 0.5
- _BevelClamp: 0
- _BevelOffset: 0
- _BevelRoundness: 0
- _BevelWidth: 0
- _BumpFace: 0
- _BumpOutline: 0
- _ColorMask: 15
- _CullMode: 0
- _Diffuse: 0.5
- _FaceDilate: 0
- _FaceUVSpeedX: 0
- _FaceUVSpeedY: 0
- _GlowInner: 0.05
- _GlowOffset: 0
- _GlowOuter: 0.05
- _GlowPower: 0.75
- _GradientScale: 10
- _LightAngle: 3.1416
- _MaskSoftnessX: 0
- _MaskSoftnessY: 0
- _OutlineSoftness: 0
- _OutlineUVSpeedX: 0
- _OutlineUVSpeedY: 0
- _OutlineWidth: 0
- _PerspectiveFilter: 0.875
- _Reflectivity: 10
- _ScaleRatioA: 0.9
- _ScaleRatioB: 0.73125
- _ScaleRatioC: 0.73125
- _ScaleX: 1
- _ScaleY: 1
- _ShaderFlags: 0
- _Sharpness: 0
- _SpecularPower: 2
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _TextureHeight: 1024
- _TextureWidth: 1024
- _UnderlayDilate: 0
- _UnderlayOffsetX: 0
- _UnderlayOffsetY: 0
- _UnderlaySoftness: 0
- _VertexOffsetX: 0
- _VertexOffsetY: 0
- _WeightBold: 0.75
- _WeightNormal: 0
m_Colors:
- _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767}
- _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0}
- _FaceColor: {r: 1, g: 1, b: 1, a: 1}
- _GlowColor: {r: 0, g: 1, b: 0, a: 0.5}
- _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767}
- _OutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1}
- _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
- _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5}
m_BuildTextureStacks: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 14fe73bc5e31343c5bcdc67d1102883f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,107 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: EncodeSansExpanded-Regular SDF Bold
m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3}
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Cube:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _FaceTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 7995524909903448683, guid: 69f41eb363a4c4caba72ecd2e9f113ea, type: 2}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _Ambient: 0.5
- _Bevel: 0.5
- _BevelClamp: 0
- _BevelOffset: 0
- _BevelRoundness: 0
- _BevelWidth: 0
- _BumpFace: 0
- _BumpOutline: 0
- _ColorMask: 15
- _CullMode: 0
- _Diffuse: 0.5
- _FaceDilate: 0
- _FaceUVSpeedX: 0
- _FaceUVSpeedY: 0
- _GlowInner: 0.05
- _GlowOffset: 0
- _GlowOuter: 0.05
- _GlowPower: 0.75
- _GradientScale: 10
- _LightAngle: 3.1416
- _MaskSoftnessX: 0
- _MaskSoftnessY: 0
- _OutlineSoftness: 0
- _OutlineUVSpeedX: 0
- _OutlineUVSpeedY: 0
- _OutlineWidth: 0.24
- _PerspectiveFilter: 0.875
- _Reflectivity: 10
- _ScaleRatioA: 0.9
- _ScaleRatioB: 0.73125
- _ScaleRatioC: 0.73125
- _ScaleX: 1
- _ScaleY: 1
- _ShaderFlags: 0
- _Sharpness: 0
- _SpecularPower: 2
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _TextureHeight: 1024
- _TextureWidth: 1024
- _UnderlayDilate: 0
- _UnderlayOffsetX: 0
- _UnderlayOffsetY: 0
- _UnderlaySoftness: 0
- _VertexOffsetX: 0
- _VertexOffsetY: 0
- _WeightBold: 0.75
- _WeightNormal: 0
m_Colors:
- _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767}
- _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0}
- _FaceColor: {r: 1, g: 1, b: 1, a: 1}
- _GlowColor: {r: 0, g: 1, b: 0, a: 0.5}
- _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767}
- _OutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1}
- _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
- _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5}
m_BuildTextureStacks: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8949210efd0774a09bf80311432874fa
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 69f41eb363a4c4caba72ecd2e9f113ea
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c76c74f50c1dd40fcb6cf1427679cb46
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

8
Runtime/Font/YaHei.meta Normal file
View File

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

View File

@ -0,0 +1,6 @@
1234567890
`~!@#$%^A&*()-=_+[]{}\|;:'",.<>?/
ABCDEFGHIGKLMNOPQRSTUVWXYZ
abcdefghigklmnopqrstuvwxyz
测试功能好的不行取消关闭打开标题是否大小上下欢迎你我他它按钮屏幕尺寸:
很抱歉听到这个谢谢!

View File

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

BIN
Runtime/Font/YaHei/MSYaHei.ttf Executable file

Binary file not shown.

View File

@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 4cb12b860c05d4fa395f7223626d40cd
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Microsoft YaHei
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

8
Runtime/Framework.meta Normal file
View File

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

View File

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

View File

@ -0,0 +1,140 @@
namespace Guru
{
using System;
using UnityEngine;
/// <summary>
/// 屏幕方向
/// </summary>
public enum ScreenOrientation
{
Portrait = 0,
Landscape,
}
public interface IDisposable
{
void Dispose();
}
public interface IContext
{
//--------- Components -----------------
bool RegisterResManager<T>(T manager, string name = "") where T : IResManager, new();
T GetResManager<T>(string name = "") where T : IResManager, new();
bool RegisterModel<T>(T model, string name = "") where T : IModel, new();
T GetModel<T>(string name = "") where T : IModel, new();
bool RegisterController<T>(T controller, string name = "") where T : IController, new();
T GetController<T>(string name = "") where T : IController, new();
bool RegisterHelper<T>(T controller, string name = "") where T : IHelper, new();
T GetHelper<T>(string name = "") where T : IHelper, new();
void RegisterUpdater(IUpdater updater);
void UnregisterUpdater(IUpdater updater);
}
/// <summary>
/// 消息管线
/// </summary>
public interface IEventPipeline
{
//--------- Event Bus ------------------
public void Subscribe<T>(Action<T> onReceiveMessage) where T : struct;
public void Unsubscribe<T>(Action<T> onReceiveMessage) where T : struct;
public void Send<T>(T message) where T : struct;
}
/// <summary>
/// 控制器接口
/// </summary>
public interface IController
{
string Name { get;}
Context Context { get; set;}
void Init();
}
public interface IModel
{
string Name { get;}
void Update(); // 数据刷新
}
public interface IView
{
string Name { get;}
void Refresh(); // UI 刷新
}
public interface IHelper
{
string Name { get;}
Context Context { get; set;}
}
public interface IResManager
{
string Name { get;}
Context Context { get; set;}
void Init();
T Load<T>(string resUri) where T : UnityEngine.Object;
void LoadAsync(string resUri, Action<ResLoadInfo> onLoaded);
}
/// <summary>
/// 资源加载器
/// </summary>
public interface IResLoader
{
void LoadAsync(string resUri, Action<ResLoadInfo> onLoaded);
}
/// <summary>
/// 更新器
/// </summary>
public interface IUpdater
{
void OnUpdate();
bool IsStopped { get; set; }
}
/// <summary>
/// 资源加载信息
/// </summary>
public class ResLoadInfo
{
public string uri = "";
public bool success = false; // 加载是否成功
public string bundleName = ""; // bundle包的名称
public object target = null;
public ResLoadInfo()
{
}
public ResLoadInfo(string uri)
{
this.uri = uri;
}
public GameObject AsGameObject() => target as GameObject;
public Texture AsTexture() => target as Texture;
public T AsObject<T>() where T : UnityEngine.Object => (T)target;
public string AsString() => (target as TextAsset)?.text ?? "";
public byte[] AsBinary() => (byte[])target;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 64b927914fca4610ac2f0ad9f858f5ed
timeCreated: 1707107986

View File

@ -0,0 +1,194 @@
namespace Guru
{
using UnityEngine;
using System;
using System.Collections.Generic;
public class Context : IContext, IEventPipeline, IDisposable
{
protected ContextObject _contextObj;
private EventBus _eventBus;
private Dictionary<string, IModel> _models;
private Dictionary<string, IController> _controllers;
private Dictionary<string, IResManager> _resManagers;
private Dictionary<string, IHelper> _helpers;
public static T Create<T> (string name = "") where T : Context, new()
{
var context = new T();
context.Init();
return context;
}
private void Init()
{
_contextObj = ContextObject.Create("guru_context");
_contextObj.OnDestroyed = OnDestroyHandler;
_contextObj.OnStart = OnStart;
_eventBus = new EventBus();
_models = new Dictionary<string, IModel>(10);
_controllers = new Dictionary<string, IController>(10);
_resManagers = new Dictionary<string, IResManager>(10);
_helpers = new Dictionary<string, IHelper>(10);
OnCreated();
}
protected virtual void OnCreated()
{
}
protected virtual void OnStart()
{
}
public virtual void Dispose()
{
}
private void OnDestroyHandler()
{
OnDestroyed();
Dispose();
}
protected virtual void OnDestroyed()
{
}
#region 注册组件
private static string GetInstanceName<T>(string instName = "")
{
if(string.IsNullOrEmpty(instName)) instName = nameof(T);
return instName;
}
private bool TryAddUpdater(object obj)
{
if (obj is IUpdater a)
{
RegisterUpdater(a);
return true;
}
return false;
}
public bool RegisterResManager<T>(T manager, string name = "") where T : IResManager, new()
{
TryAddUpdater(manager);
if (_resManagers.TryAdd(GetInstanceName<T>(name), manager))
{
manager.Context = this;
return true;
}
return false;
}
public T GetResManager<T>(string name = "") where T : IResManager, new()
{
return _resManagers.TryGetValue(GetInstanceName<T>(name), out var m) ? (T)m : default(T);
}
/// <summary>
/// 注册数据模型
/// </summary>
/// <param instName="model"></param>
/// <param name="name"></param>
/// <typeparam instName="T"></typeparam>
public bool RegisterModel<T>(T model, string name = "") where T : IModel, new()
{
TryAddUpdater(model);
return _models.TryAdd(GetInstanceName<T>(name), model);
}
public T GetModel<T>(string name = "") where T : IModel, new()
{
return _models.TryGetValue(GetInstanceName<T>(name), out var m) ? (T)m : default(T);
}
/// <summary>
/// 注册辅助工具
/// </summary>
/// <param name="helper"></param>
/// <param name="name"></param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public bool RegisterHelper<T>(T helper, string name = "") where T : IHelper, new()
{
TryAddUpdater(helper);
return _helpers.TryAdd(GetInstanceName<T>(name), helper);
}
public T GetHelper<T>(string name = "") where T : IHelper, new()
{
return _helpers.TryGetValue(GetInstanceName<T>(name), out var m) ? (T)m : default(T);
}
/// <summary>
/// 注册控制器
/// </summary>
/// <param instName="controller"></param>
/// <typeparam instName="T"></typeparam>
public bool RegisterController<T>(T controller, string name = "") where T : IController, new()
{
TryAddUpdater(controller);
if (_controllers.TryAdd(GetInstanceName<T>(name), controller))
{
controller.Context = this;
return true;
}
return false;
}
public T GetController<T>(string name = "") where T : IController, new()
{
return _controllers.TryGetValue(GetInstanceName<T>(name), out var c) ? (T)c : default(T);
}
#endregion
#region 事件管理
public void Subscribe<T>(Action<T> onReceiveMessage) where T : struct
{
_eventBus.Subscribe(onReceiveMessage);
}
public void Unsubscribe<T>(Action<T> onReceiveMessage) where T : struct
{
_eventBus.Unsubscribe(onReceiveMessage);
}
public void Send<T>(T message) where T : struct
{
_eventBus.Send(message);
}
#endregion
#region 更新挂载
public void RegisterUpdater(IUpdater updater)
{
_contextObj.AddUpdater(updater);
}
public void UnregisterUpdater(IUpdater updater)
{
_contextObj.RemoveUpdater(updater);
}
#endregion
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e04392ec6b0045e99cc840d18e6b46bb
timeCreated: 1707098801

View File

@ -0,0 +1,90 @@
namespace Guru
{
using System;
using System.Collections.Generic;
using UnityEngine;
public class ContextObject: MonoBehaviour
{
private const string InstanceName = "app_context";
private HashSet<IUpdater> _updaters;
private HashSet<IUpdater> _updatersWillRemove;
public Action OnDestroyed;
public Action OnStart;
public static ContextObject Create(string name = "" )
{
if (string.IsNullOrEmpty(name)) name = InstanceName;
var go = new GameObject(name);
DontDestroyOnLoad(go);
return go.AddComponent<ContextObject>();
}
public void AddUpdater(IUpdater updater)
{
_updaters.Add(updater);
}
public void RemoveUpdater(IUpdater updater)
{
updater.IsStopped = true;
_updatersWillRemove.Add(updater);
}
#region 生命周期
private void Awake()
{
_updaters = new HashSet<IUpdater>();
_updatersWillRemove = new HashSet<IUpdater>();
}
void Start()
{
OnStart?.Invoke();
}
private void OnDestroy()
{
OnDestroyed?.Invoke();
}
public void SelfDestroy()
{
Destroy(gameObject);
}
private void Update()
{
if(_updaters.Count > 0)
{
foreach (var updater in _updaters)
{
if(updater != null &&
!updater.IsStopped &&
!_updatersWillRemove.Contains(updater))
{
updater.OnUpdate();
}
}
if (_updatersWillRemove.Count > 0)
{
foreach (var d in _updatersWillRemove)
{
_updaters.Remove(d);
}
_updatersWillRemove.Clear();
}
}
}
#endregion
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b7952cd3aec24f84b57ab292a82055e9
timeCreated: 1707121139

View File

@ -0,0 +1,122 @@
namespace Guru
{
using System;
using System.Collections.Generic;
/// <summary>
/// 事件管线基类
/// </summary>
public class EventBus
{
private Dictionary<string, HashSet<Delegate>> _eventDict;
protected Dictionary<string, HashSet<Delegate>> EventDict
{
get
{
if (_eventDict == null)
{
_eventDict = new Dictionary<string, HashSet<Delegate>>(20);
}
return _eventDict;
}
}
/// <summary>
/// 发送事件
/// </summary>
/// <param name="eventBody"></param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public bool Send<T>(T eventBody) where T : struct
{
return Trigger<T>(eventBody);
}
/// <summary>
/// 订阅消息
/// </summary>
/// <param name="onReceiveMessage"></param>
/// <typeparam name="T"></typeparam>
public void Subscribe<T>(Action<T> onReceiveMessage) where T : struct
{
AddListener(onReceiveMessage);
}
public void Unsubscribe<T>(Action<T> onReceiveMessage) where T : struct
{
RemoveListener(onReceiveMessage);
}
public void Dispose()
{
if (_eventDict != null)
{
foreach (var actions in _eventDict.Values)
{
actions.Clear();
}
_eventDict.Clear();
}
}
protected bool HasEvent<T>() where T : struct
{
return EventDict.ContainsKey(nameof(T));
}
protected void AddListener<T>(Action<T> onReceiveMessage) where T : struct
{
if (!HasEvent<T>())
{
EventDict[nameof(T)] = new HashSet<Delegate>();
}
EventDict[nameof(T)].Add(onReceiveMessage);
}
protected void RemoveListener<T>(Action<T> onReceiveMessage) where T : struct
{
if (HasEvent<T>())
{
if (EventDict[nameof(T)].Contains(onReceiveMessage))
{
EventDict[nameof(T)].Remove(onReceiveMessage);
}
}
}
/// <summary>
///
/// </summary>
/// <param name="message"></param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
protected bool Trigger<T>(T message) where T : struct
{
if (HasEvent<T>())
{
HashSet<Delegate> newActions = new HashSet<Delegate>(EventDict[nameof(T)].Count);
foreach (var d in EventDict[nameof(T)])
{
if (d.Target != null)
{
(d as Action<T>)?.Invoke(message);
newActions.Add(d);
}
}
EventDict[nameof(T)] = newActions; // 过滤掉不存在的时间
return true;
}
return false;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 4b2ee0da42eb449facddde6b938a7f6e
timeCreated: 1707096820

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 2526f3ebe9b743918a4133394d01f150
timeCreated: 1707099361

View File

@ -0,0 +1,24 @@
namespace Guru
{
using System;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 批量加载器
/// </summary>
public interface IBatchLoader
{
/// <summary>
/// 批量加载
/// </summary>
/// <param name="resUriList"></param>
/// <param name="onLoadComplete"></param>
void LoadQueue(string[] resUriList, Action<List<ResLoadInfo>> onLoadComplete);
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: df551e2b5ddb44b28a98a1ac027fa3c2
timeCreated: 1707099820

View File

@ -0,0 +1,12 @@
namespace Guru
{
// 对象池
public interface IPool<T>
{
int PreSpawnCount { get; set; }
string Name { get; }
T Get();
T Create();
void Recycle(T obj);
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1642ab73dc4741c091f8fd6831bf6057
timeCreated: 1707113780

View File

@ -0,0 +1,313 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using Object = UnityEngine.Object;
namespace Guru
{
public enum ResType
{
Unknown = 0,
Bundle,
Texture,
File,
}
public class ResUriHelper
{
public const string FilePrefix = "file::";
public const string BundlePrefix = "bundle::";
public const string TexturePrefix = "texture::";
public const string HttpPrefix = "http://";
public const string HttpsPrefix = "https://";
public static string GetFileUri(string url)
{
return $"{FilePrefix}{url}";
}
public static string GetBundleUri(string url)
{
return $"{BundlePrefix}{url}";
}
public static string GetTextureUri(string url)
{
return $"{TexturePrefix}{url}";
}
public static void UriToType(string uri, out ResType type, out string url)
{
type = ResType.Unknown;
url = uri;
if (uri.StartsWith(FilePrefix))
{
type = ResType.File;
url = uri.Substring(FilePrefix.Length);
}
else if (uri.StartsWith(BundlePrefix))
{
type = ResType.Bundle;
url = uri.Substring(BundlePrefix.Length);
}
else if (uri.StartsWith(TexturePrefix))
{
type = ResType.Texture;
url = uri.Substring(TexturePrefix.Length);
}
else if (uri.StartsWith(HttpPrefix) || uri.StartsWith(HttpsPrefix))
{
type = ResType.File;
url = uri;
}
}
}
public class ResLoaderBase: IResLoader
{
public int RetryTimes { get; set; } = 3;
private bool _iSBusy = false;
public bool IsBusy
{
get => _iSBusy;
set
{
_iSBusy = value;
if(!_iSBusy) OnLoaderFree?.Invoke(this);
}
}
public Action<ResLoaderBase> OnLoaderFree;
private Queue<OneResLoadTask> _taskPool = new Queue<OneResLoadTask>(10);
#region 加载逻辑
internal static OneResLoadTask CreateBundleTask(string url, Action<ResLoadInfo> callback, Action<bool, OneResLoadTask> handler)
{
return OneResLoadTask.Create(url, callback, handler, UnityWebRequestAssetBundle.GetAssetBundle(url));
}
internal static OneResLoadTask CreateTextureTask(string url, Action<ResLoadInfo> callback, Action<bool, OneResLoadTask> handler)
{
return OneResLoadTask.Create(url, callback, handler, UnityWebRequestTexture.GetTexture(url, true));;
}
internal static OneResLoadTask CreateFileTask(string url, Action<ResLoadInfo> callback, Action<bool, OneResLoadTask> handler)
{
return OneResLoadTask.Create(url, callback, handler, new UnityWebRequest(url));;
}
/// <summary>
/// 异步加载
/// </summary>
/// <param name="resUri"></param>
/// <param name="onLoadComplete"></param>
public void LoadAsync(string resUri, Action<ResLoadInfo> onLoadComplete)
{
ResUriHelper.UriToType(resUri, out var type, out var url);
switch (type)
{
case ResType.Bundle:
LoadBundle(url, onLoadComplete);
break;
case ResType.Texture:
LoadTexture(url, onLoadComplete);
break;
case ResType.File:
LoadFile(url, onLoadComplete);
break;
default:
Debug.LogError($"--- Unknown ResType: {type}");
break;
}
}
/// <summary>
/// 开始异步加载
/// </summary>
/// <param name="task"></param>
/// <param name="onLoadComplete"></param>
private void StartAsyncLoading(OneResLoadTask task)
{
IsBusy = true;
task.www.SendWebRequest().completed += ao =>
{
if (task.www.result == UnityWebRequest.Result.Success)
{
task.loadHandler?.Invoke(true, task);
}
else
{
if (task.retryTimes < RetryTimes)
{
task.retryTimes++;
StartAsyncLoading(task);
}
else
{
task.loadHandler?.Invoke(false, task);
}
}
};
}
private void AddLoadTask(OneResLoadTask task)
{
if (IsBusy)
{
_taskPool.Enqueue(task); // 入队等待
}
else
{
StartAsyncLoading(task); // 直接加载
}
}
#endregion
#region 加载 Bundle 资源
/// <summary>
/// 加载 Bundle
/// </summary>
/// <param name="url"></param>
/// <param name="onLoadComplete"></param>
public void LoadBundle(string url, Action<ResLoadInfo> onLoadComplete)
{
AddLoadTask(CreateBundleTask(url, onLoadComplete, OnBundleLoaded));
}
private void OnBundleLoaded(bool success, OneResLoadTask task)
{
var info = new ResLoadInfo(task.url);
if (success)
{
var ab = DownloadHandlerAssetBundle.GetContent(task.www);
if(ab != null)
{
info.success = true;
info.target = ab;
info.bundleName = ab.name;
}
}
task.callback?.Invoke(info);
SetFree();
}
#endregion
#region 加载二进制文件
public void LoadFile(string url, Action<ResLoadInfo> onLoadComplete)
{
if (IsBusy)
{
Debug.LogError($"--- Loader is busy, canot load this task");
return;
}
StartAsyncLoading(CreateFileTask(url, onLoadComplete, OnFileLoaded));
}
private void OnFileLoaded(bool success, OneResLoadTask task)
{
var info = new ResLoadInfo(task.url);
if (success)
{
var bytes = task.www.downloadHandler?.data ?? null;
if(bytes != null)
{
info.success = true;
info.target = bytes;
}
}
task.callback?.Invoke(info);
SetFree();
}
#endregion
#region 加载图片
public void LoadTexture(string url, Action<ResLoadInfo> onLoadComplete)
{
var request = CreateTextureTask(url, onLoadComplete, OnTextureLoaded);
if (!IsBusy)
{
StartAsyncLoading(request);
}
_taskPool.Enqueue(request);
}
void OnTextureLoaded(bool success, OneResLoadTask task)
{
var info = new ResLoadInfo(task.url);
if (success)
{
var texture = DownloadHandlerTexture.GetContent(task.www);
if (texture != null)
{
info.success = true;
info.target = texture;
}
}
task.callback?.Invoke(info);
SetFree();
}
#endregion
#region 加载器空闲
private void SetFree()
{
if (_taskPool.Count > 0)
{
StartAsyncLoading(_taskPool.Dequeue());
}
IsBusy = false;
}
#endregion
}
/// <summary>
/// 单挑加载任务类
/// </summary>
internal struct OneResLoadTask
{
public string url;
public int retryTimes;
public Action<ResLoadInfo> callback;
public UnityWebRequest www;
public Action<bool, OneResLoadTask> loadHandler;
public static OneResLoadTask Create(string url, Action<ResLoadInfo> callback, Action<bool, OneResLoadTask> handler,
UnityWebRequest www)
{
return new OneResLoadTask()
{
url = url,
callback = callback,
loadHandler = handler,
www = www,
retryTimes = 0,
};
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f6b6c659f919456fbdebe0a306061082
timeCreated: 1707113404

View File

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

View File

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

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 25ab9515525c4d27ab588a38777351f9
timeCreated: 1707187018

View File

@ -0,0 +1,115 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &4973367134946982464
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7087308942415154381}
- component: {fileID: 3775355190176969404}
- component: {fileID: 5216159452735947783}
- component: {fileID: 6513792890421400829}
- component: {fileID: 2623612401829160794}
m_Layer: 0
m_Name: root_canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7087308942415154381
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4973367134946982464}
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: []
m_Father: {fileID: 0}
m_RootOrder: 0
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!223 &3775355190176969404
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4973367134946982464}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 1
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!114 &5216159452735947783
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4973367134946982464}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 1
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 1080, y: 2340}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!114 &6513792890421400829
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4973367134946982464}
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 &2623612401829160794
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4973367134946982464}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: eaa3735b2d7548e5bb7fe7ae036cbe36, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

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

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b2bf33bdf70742a0ab4d103aa1369252
timeCreated: 1707098815

View File

@ -0,0 +1,142 @@
namespace Guru.UI
{
using System;
using UnityEngine;
using UnityEngine.UI;
public class UIRoot : ViewBase
{
const string PrefabPath = "guru/ui/root_canvas";
private static UIRoot _instance;
public static UIRoot Instance
{
get
{
if (_instance == null) _instance = LoadInstance();
return _instance;
}
}
/// <summary>
/// CloneObject 对象
/// </summary>
/// <returns></returns>
private static UIRoot LoadInstance()
{
var ui = CloneResources<UIRoot>(PrefabPath);
ui.Init();
return ui;
}
public static T Clone<T>(GameObject prefab, Transform container = null) where T :Component
{
var go = Instantiate(prefab, container);
if (go != null)
{
go.name = nameof(T).ToLower();
return go.GetComponent<T>();
}
return null;
}
public static T CloneResources<T>(string path, Transform container = null) where T : Component
{
var prefab = Resources.Load<GameObject>(path);
if( null != prefab) return Clone<T>(prefab, container);
return null;
}
private Canvas _canvas;
private CanvasScaler _canvasScaler;
private Transform _rootNode;
private void Init()
{
DontDestroyOnLoad(gameObject);
gameObject.name = "guru_ui";
_rootNode = CreateEmptyNode("root");
_canvas = gameObject.GetComponent<Canvas>();
_canvasScaler = gameObject.GetComponent<CanvasScaler>();
}
/// <summary>
/// 引用分辨率
/// </summary>
public Vector2 ReferenceResolution
{
get => _canvasScaler.referenceResolution;
set => _canvasScaler.referenceResolution = value;
}
/// <summary>
/// 宽高适配
/// </summary>
public float MatchWidthOrHeight
{
get => _canvasScaler.matchWidthOrHeight;
set => _canvasScaler.matchWidthOrHeight = value;
}
/// <summary>
/// 屏幕渲染 Order
/// </summary>
public int SortingOrder
{
get => _canvas.sortingOrder;
set => _canvas.sortingOrder = value;
}
#region 节点操作
public RectTransform CreateEmptyNode(string nodeName = "node", Transform parent = null)
{
if (parent == null) parent = transform;
var go = new GameObject(nodeName);
go.transform.SetParent(parent, false);
go.transform.localScale = Vector3.one;
var c = go.AddComponent<RectTransform>();
c.anchorMax = Vector2.one;
c.anchorMin = Vector2.zero;
c.sizeDelta = Vector2.zero;
c.anchoredPosition = Vector2.zero;
c.pivot = Vector2.one * 0.5f;
return c;
}
public RectTransform CreateNodeFromPath(string path, Transform parent = null)
{
var names = path.Split('/');
if (parent == null) parent = _rootNode;
var node = parent as RectTransform;
foreach (var n in names)
{
node = CreateEmptyNode(n, node);
}
return node;
}
#endregion
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: eaa3735b2d7548e5bb7fe7ae036cbe36
timeCreated: 1707046536

View File

@ -0,0 +1,84 @@
using System;
namespace Guru.UI
{
using UnityEngine;
public class ViewBase: MonoBehaviour, IView, IDisposable
{
private Transform _transform;
public Transform Transform
{
get
{
if (_transform == null) _transform = gameObject.transform;
return _transform;
}
}
private RectTransform _rectTransform;
public RectTransform RectTransform
{
get
{
if (_rectTransform == null) _rectTransform = gameObject.GetComponent<RectTransform>();
return _rectTransform;
}
}
public string Name
{
get => gameObject.name;
set => gameObject.name = value;
}
public Vector3 LocalPosition
{
get => Transform.localPosition;
set => Transform.localPosition = value;
}
public Vector3 Position
{
get => Transform.position;
set => Transform.position = value;
}
public Vector2 AnchoredPos
{
get => RectTransform.anchoredPosition;
set => RectTransform.anchoredPosition = value;
}
public float Scale
{
get => _transform.localScale.x;
set => _transform.localScale = Vector3.one * value;
}
public bool Active
{
get => gameObject.activeSelf;
set => gameObject.SetActive(value);
}
public Transform FindChild(string path) => Transform.Find(path);
public virtual void Refresh()
{
}
public virtual void Dispose()
{
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 5385c66b73384a43a11801d6c308b2ba
timeCreated: 1707046685

19
Runtime/Guru.UI.asmdef Normal file
View File

@ -0,0 +1,19 @@
{
"name": "Guru.UI",
"rootNamespace": "",
"references": [
"I2Localization",
"Unity.TextMeshPro",
"DOTween.Modules",
"GuruSDK"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

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

3
Runtime/GuruApp.meta Normal file
View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 0153d1c4d4664b7ab6344600aac4539d
timeCreated: 1707112218

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d083852efee549b8b50596d17dbd3e83
timeCreated: 1707112225

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8950fbed73f44f6c91b0e74f3157e60f
timeCreated: 1707189542

View File

@ -0,0 +1,73 @@
using Guru.UI;
using UnityEngine;
namespace Guru
{
public class GuruApp
{
private static GuruApp _instance;
public static GuruApp Instance
{
get
{
if (_instance == null) Install();
return _instance;
}
}
public static void Install()
{
_instance = new GuruApp();
_instance.Init();
}
private GuruContext _context;
private GuruUIController _uiController;
private void Init()
{
_context = GuruContext.Instance;
_uiController = _context.GetController<GuruUIController>();
}
public void Dispose()
{
_context.Dispose();
}
public class GuruApp_UI
{
private static GuruUIController _uiController;
internal static GuruUIController Controller_
{
get
{
if(_uiController == null) _uiController = GuruApp.Instance._uiController;
return _uiController;
}
}
public static RectTransform AddNode(string nodePath = "", Transform parent = null)
{
return Controller_.AddNode(nodePath, parent);
}
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 75f3e447a052442d95272b49ebb11dde
timeCreated: 1707189779

View File

@ -0,0 +1,73 @@
using UnityEngine;
namespace Guru.UI
{
public class GuruContext: Context
{
private static GuruContext _instance;
public static GuruContext Instance
{
get
{
if (_instance == null)
_instance = Create<GuruContext>();
return _instance;
}
}
private GuruResManager _resMgr;
private GuruUIController _uiCtrl;
/// <summary>
/// 初始化调用
/// </summary>
protected override void OnCreated()
{
_resMgr = GuruResManager.Create(this); // 资源控制器
_uiCtrl = GuruUIController.Create(this); // UI 控制器
}
protected override void OnStart()
{
AutoOrientation();
}
/// <summary>
/// 设置旋转
/// </summary>
/// <param name="orientation"></param>
public void SetOrientation(ScreenOrientation orientation = ScreenOrientation.Portrait)
{
_uiCtrl.SetOrientation(orientation);
}
/// <summary>
/// 自动调整方向
/// </summary>
private void AutoOrientation()
{
// 旋转方向
var o = Screen.width > Screen.height ? ScreenOrientation.Landscape : ScreenOrientation.Portrait;
SetOrientation(o);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: cd6b2523c69f4bb382ce8910392a6aee
timeCreated: 1707112232

View File

@ -0,0 +1,213 @@
namespace Guru
{
using System;
using Object = UnityEngine.Object;
using UnityEngine;
using System.Collections.Generic;
public class GuruResManager : IResManager, IUpdater
{
public const string InstanceName = "guru_res_manager";
public static float CheckRequestInterval = 3; // 检查加载队列的频率
public string Name => "guru_res";
private bool _isReady;
public bool IsReady => _isReady;
public Context Context { get; set; }
private LoaderPool _loaderPool;
private Queue<ResRequest> _requests;
/// <summary>
/// 注册资源管理器
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public static GuruResManager Create(Context context)
{
var mgr = new GuruResManager();
mgr.Init();
context.RegisterResManager(mgr, InstanceName);
return mgr;
}
public void Init()
{
_isReady = true;
_loaderPool = LoaderPool.CreatePool();
_requests = new Queue<ResRequest>(20);
}
public T CloneObject<T>(GameObject prefab, Transform container = null) where T :Component
{
var go = GameObject.Instantiate<GameObject>(prefab, container);
if (go != null)
{
go.name = nameof(T).ToLower();
return go.GetComponent<T>();
}
return null;
}
/// <summary>
/// 加载本地资源
/// </summary>
/// <param name="resUri"></param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public T Load<T>(string resUri) where T : Object
{
return Resources.Load<T>(resUri);
}
/// <summary>
/// 异步加载资源
/// </summary>
/// <param name="resUri"></param>
/// <param name="onLoadComplete"></param>
/// <typeparam name="T"></typeparam>
public void LoadAsync(string resUri, Action<ResLoadInfo> onLoadComplete)
{
ResRequest req = ResRequest.Create(resUri, onLoadComplete);
_requests.Enqueue(req); // 添加任务
}
#region 帧更新
/// <summary>
/// 帧更新
/// </summary>
public void OnUpdate()
{
CheckLoadingList();
}
public bool IsStopped { get; set; } = false;
#endregion
#region 加载队列
private float _checkLoadingDuration = 0;
/// <summary>
/// 检查加载队列
/// </summary>
private void CheckLoadingList()
{
if (_requests.Count > 0 && _loaderPool.FreeCount > 0)
{
_checkLoadingDuration = 0;
}
// 更新检查队列
if (_checkLoadingDuration > 0)
{
_checkLoadingDuration -= Time.deltaTime;
return;
}
// 检查队列
while (_requests.Count > 0 && _loaderPool.FreeCount > 0)
{
var loader = _loaderPool.Get();
if (loader != null)
{
var req = _requests.Dequeue();
loader.LoadAsync(req.resUri, req.callback);
}
}
_checkLoadingDuration = CheckRequestInterval;
}
#endregion
}
/// <summary>
/// 加载器池
/// 默认同时持有 3 个加载器
/// </summary>
internal class LoaderPool: IPool<ResLoaderBase>
{
public string Name => "loader_pool";
public int PreSpawnCount { get; set; } = 3;
private Queue<ResLoaderBase> _freeLoaders;
public static LoaderPool CreatePool(int initCount = 3)
{
if (initCount < 2) initCount = 2; // 最小 2 个
var pool = new LoaderPool(initCount);
return pool;
}
public LoaderPool(int initCount = 0)
{
if (initCount > 0) PreSpawnCount = initCount;
_freeLoaders = new Queue<ResLoaderBase>();
if (PreSpawnCount > 0)
{
for (int i = 0; i < PreSpawnCount; i++)
{
_freeLoaders.Enqueue(Create());
}
}
}
public ResLoaderBase Get()
{
if(FreeCount > 0)
{
return _freeLoaders.Dequeue();
}
return null;
}
public ResLoaderBase Create()
{
var loader = new ResLoaderBase();
loader.OnLoaderFree = Recycle;
return loader;
}
public void Recycle(ResLoaderBase obj)
{
_freeLoaders.Enqueue(obj);
}
public int FreeCount => _freeLoaders.Count;
}
/// <summary>
/// 加载需求
/// </summary>
internal struct ResRequest
{
public string url;
public string resUri;
public Action<ResLoadInfo> callback;
public static ResRequest Create(string resUri, Action<ResLoadInfo> callback)
{
ResUriHelper.UriToType(resUri, out var type, out var url);
return new ResRequest()
{
url = url,
resUri = resUri,
callback = callback
};
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 067c1d30efc74f87877f39141083e735
timeCreated: 1707112425

View File

@ -0,0 +1,69 @@
using Guru.UI;
using UnityEngine;
namespace Guru
{
public class GuruUIController: IController
{
public string Name => "guru_ui";
public Context Context { get; set; }
//----------- 设置分辨率 --------------
public static readonly int DefaultDesignSize_1080 = 1080;
public static readonly int DefaultDesignSize_2340 = 2340;
public int designWidth;
public int designHeight;
private UIRoot _root;
public static GuruUIController Create(Context context)
{
var root = new GuruUIController { Context = context };
root.Init();
return root;
}
private GuruResManager _resMgr;
/// <summary>
/// 初始化
/// </summary>
public void Init()
{
_resMgr = Context.GetResManager<GuruResManager>();
CreateRoot();
SetOrientation();
}
public void SetOrientation(ScreenOrientation orientation = ScreenOrientation.Portrait)
{
if (orientation == ScreenOrientation.Portrait)
{
designWidth = DefaultDesignSize_1080;
designHeight = DefaultDesignSize_2340;
}
else
{
designWidth = DefaultDesignSize_2340;
designHeight = DefaultDesignSize_1080;
}
}
private void CreateRoot()
{
_root = UIRoot.Instance;
}
public RectTransform AddNode(string nodePath = "", Transform parent = null)
{
return _root.CreateNodeFromPath(nodePath, parent);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 520fd253d52a4c4e981b7fba15e06540
timeCreated: 1707186818

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f1336c7d00754fd086977872699f590d
timeCreated: 1707189555

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 89eaf1b11e9f4c8fabb8e2ba4cd4c16e
timeCreated: 1707187005

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c86fbbf1ce6a4a399b3e536838dd80a3
timeCreated: 1707187011

8
Runtime/Modules.meta Normal file
View File

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

View File

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

View File

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

View File

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

Binary file not shown.

View File

@ -0,0 +1,133 @@
fileFormatVersion: 2
guid: 2ca3d2144769b472cad75373d2d02166
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 1
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
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 0
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 60, y: 0, z: 60, 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
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 744 B

View File

@ -0,0 +1,133 @@
fileFormatVersion: 2
guid: 9988fb1149ca649a8a6b1a61adacdf99
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
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
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 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: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 0
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
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -0,0 +1,133 @@
fileFormatVersion: 2
guid: 40351ab8256da4bf68e3103b0b9a3264
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 1
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
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 0
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
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,133 @@
fileFormatVersion: 2
guid: 16b5786e532ea42f69513fef4f76d6f9
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
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
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 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: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 0
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
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More