├── .gitignore
├── Assets
├── Example.meta
├── Example
│ ├── Example.unity
│ ├── Example.unity.meta
│ ├── Resources.meta
│ ├── Resources
│ │ ├── Flag.meta
│ │ └── Flag
│ │ │ ├── celestial.jpg
│ │ │ ├── celestial.jpg.meta
│ │ │ ├── flower.jpg
│ │ │ ├── flower.jpg.meta
│ │ │ ├── greendragon.jpg
│ │ │ ├── greendragon.jpg.meta
│ │ │ ├── treeolife.jpg
│ │ │ └── treeolife.jpg.meta
│ ├── StreamingAssets.meta
│ ├── StreamingAssets
│ │ ├── Fruit.meta
│ │ └── Fruit
│ │ │ ├── Fruit_1.png
│ │ │ ├── Fruit_1.png.meta
│ │ │ ├── Fruit_2.png
│ │ │ ├── Fruit_2.png.meta
│ │ │ ├── Fruit_3.png
│ │ │ ├── Fruit_3.png.meta
│ │ │ ├── Fruit_4.png
│ │ │ ├── Fruit_4.png.meta
│ │ │ ├── Fruit_5.png
│ │ │ ├── Fruit_5.png.meta
│ │ │ ├── Fruit_6.png
│ │ │ ├── Fruit_6.png.meta
│ │ │ ├── Fruit_7.png
│ │ │ ├── Fruit_7.png.meta
│ │ │ ├── Fruit_8.png
│ │ │ └── Fruit_8.png.meta
│ ├── main.cs
│ └── main.cs.meta
├── RuntimeTextureAtlas.meta
└── RuntimeTextureAtlas
│ ├── Editor.meta
│ ├── Editor
│ ├── RawImageAgentEditor.cs
│ ├── RawImageAgentEditor.cs.meta
│ ├── TextureAtlasManagerEditor.cs
│ └── TextureAtlasManagerEditor.cs.meta
│ ├── Resources.meta
│ ├── Resources
│ ├── DrawTexture.shader
│ └── DrawTexture.shader.meta
│ ├── Script.meta
│ ├── Script
│ ├── Packer.meta
│ ├── Packer
│ │ ├── Column.cs
│ │ ├── Column.cs.meta
│ │ ├── GreedyPacker.cs
│ │ ├── GreedyPacker.cs.meta
│ │ ├── IBinaryPacker.cs
│ │ ├── IBinaryPacker.cs.meta
│ │ ├── Rectangle.cs
│ │ ├── Rectangle.cs.meta
│ │ ├── Row.cs
│ │ └── Row.cs.meta
│ ├── TextureAtlas.meta
│ ├── TextureAtlas
│ │ ├── SubTextureAgent.cs
│ │ ├── SubTextureAgent.cs.meta
│ │ ├── TextureAtlas.cs
│ │ ├── TextureAtlas.cs.meta
│ │ ├── TextureAtlasManager.cs
│ │ ├── TextureAtlasManager.cs.meta
│ │ ├── TextureUtil.cs
│ │ └── TextureUtil.cs.meta
│ ├── UIExtention.meta
│ └── UIExtention
│ │ ├── RawImageAgent.cs
│ │ ├── RawImageAgent.cs.meta
│ │ ├── RawImageExtension.cs
│ │ └── RawImageExtension.cs.meta
│ ├── TextureAtlasManager.prefab
│ └── TextureAtlasManager.prefab.meta
├── Image
├── drawcall-with.png
├── drawcall-without.png
├── rendertexture.png
└── screenshot.png
├── LICENSE
├── Packages
└── manifest.json
├── ProjectSettings
├── AudioManager.asset
├── ClusterInputManager.asset
├── DynamicsManager.asset
├── EditorBuildSettings.asset
├── EditorSettings.asset
├── GraphicsSettings.asset
├── InputManager.asset
├── NavMeshAreas.asset
├── NetworkManager.asset
├── Physics2DSettings.asset
├── PresetManager.asset
├── ProjectSettings.asset
├── ProjectVersion.txt
├── QualitySettings.asset
├── TagManager.asset
├── TimeManager.asset
├── UnityConnectSettings.asset
└── VFXManager.asset
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | [Ll]ibrary/
2 | [Tt]emp/
3 | [Oo]bj/
4 | [Ll]ogs/
5 | [Bb]uild/
6 | [Bb]uilds/
7 | Assets/AssetStoreTools*
8 |
9 | # Visual Studio cache directory
10 | .vs/
11 |
12 | # Autogenerated VS/MD/Consulo solution and project files
13 | ExportedObj/
14 | .consulo/
15 | *.csproj
16 | *.unityproj
17 | *.sln
18 | *.suo
19 | *.tmp
20 | *.user
21 | *.userprefs
22 | *.pidb
23 | *.booproj
24 | *.svd
25 | *.pdb
26 | *.opendb
27 |
28 | # Unity3D generated meta files
29 | *.pidb.meta
30 | *.pdb.meta
31 |
32 | # Unity3D Generated File On Crash Reports
33 | sysinfo.txt
34 |
35 | # Builds
36 | *.apk
37 | *.unitypackage
38 | .DS_Store
39 |
--------------------------------------------------------------------------------
/Assets/Example.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7323cb52355b442e2862a7f2376c8964
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Example/Example.unity:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!29 &1
4 | OcclusionCullingSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_OcclusionBakeSettings:
8 | smallestOccluder: 5
9 | smallestHole: 0.25
10 | backfaceThreshold: 100
11 | m_SceneGUID: 00000000000000000000000000000000
12 | m_OcclusionCullingData: {fileID: 0}
13 | --- !u!104 &2
14 | RenderSettings:
15 | m_ObjectHideFlags: 0
16 | serializedVersion: 9
17 | m_Fog: 0
18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
19 | m_FogMode: 3
20 | m_FogDensity: 0.01
21 | m_LinearFogStart: 0
22 | m_LinearFogEnd: 300
23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
26 | m_AmbientIntensity: 1
27 | m_AmbientMode: 0
28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
30 | m_HaloStrength: 0.5
31 | m_FlareStrength: 1
32 | m_FlareFadeSpeed: 3
33 | m_HaloTexture: {fileID: 0}
34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
35 | m_DefaultReflectionMode: 0
36 | m_DefaultReflectionResolution: 128
37 | m_ReflectionBounces: 1
38 | m_ReflectionIntensity: 1
39 | m_CustomReflection: {fileID: 0}
40 | m_Sun: {fileID: 0}
41 | m_IndirectSpecularColor: {r: 0.37311947, g: 0.38074, b: 0.35872698, a: 1}
42 | m_UseRadianceAmbientProbe: 0
43 | --- !u!157 &3
44 | LightmapSettings:
45 | m_ObjectHideFlags: 0
46 | serializedVersion: 11
47 | m_GIWorkflowMode: 0
48 | m_GISettings:
49 | serializedVersion: 2
50 | m_BounceScale: 1
51 | m_IndirectOutputScale: 1
52 | m_AlbedoBoost: 1
53 | m_EnvironmentLightingMode: 0
54 | m_EnableBakedLightmaps: 1
55 | m_EnableRealtimeLightmaps: 0
56 | m_LightmapEditorSettings:
57 | serializedVersion: 10
58 | m_Resolution: 2
59 | m_BakeResolution: 10
60 | m_AtlasSize: 512
61 | m_AO: 0
62 | m_AOMaxDistance: 1
63 | m_CompAOExponent: 1
64 | m_CompAOExponentDirect: 0
65 | m_Padding: 2
66 | m_LightmapParameters: {fileID: 0}
67 | m_LightmapsBakeMode: 1
68 | m_TextureCompression: 1
69 | m_FinalGather: 0
70 | m_FinalGatherFiltering: 1
71 | m_FinalGatherRayCount: 256
72 | m_ReflectionCompression: 2
73 | m_MixedBakeMode: 2
74 | m_BakeBackend: 1
75 | m_PVRSampling: 1
76 | m_PVRDirectSampleCount: 32
77 | m_PVRSampleCount: 256
78 | m_PVRBounces: 2
79 | m_PVRFilterTypeDirect: 0
80 | m_PVRFilterTypeIndirect: 0
81 | m_PVRFilterTypeAO: 0
82 | m_PVRFilteringMode: 1
83 | m_PVRCulling: 1
84 | m_PVRFilteringGaussRadiusDirect: 1
85 | m_PVRFilteringGaussRadiusIndirect: 5
86 | m_PVRFilteringGaussRadiusAO: 2
87 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5
88 | m_PVRFilteringAtrousPositionSigmaIndirect: 2
89 | m_PVRFilteringAtrousPositionSigmaAO: 1
90 | m_ShowResolutionOverlay: 1
91 | m_LightingDataAsset: {fileID: 0}
92 | m_UseShadowmask: 1
93 | --- !u!196 &4
94 | NavMeshSettings:
95 | serializedVersion: 2
96 | m_ObjectHideFlags: 0
97 | m_BuildSettings:
98 | serializedVersion: 2
99 | agentTypeID: 0
100 | agentRadius: 0.5
101 | agentHeight: 2
102 | agentSlope: 45
103 | agentClimb: 0.4
104 | ledgeDropHeight: 0
105 | maxJumpAcrossDistance: 0
106 | minRegionArea: 2
107 | manualCellSize: 0
108 | cellSize: 0.16666667
109 | manualTileSize: 0
110 | tileSize: 256
111 | accuratePlacement: 0
112 | debug:
113 | m_Flags: 0
114 | m_NavMeshData: {fileID: 0}
115 | --- !u!1 &66738267
116 | GameObject:
117 | m_ObjectHideFlags: 0
118 | m_CorrespondingSourceObject: {fileID: 0}
119 | m_PrefabInstance: {fileID: 0}
120 | m_PrefabAsset: {fileID: 0}
121 | serializedVersion: 6
122 | m_Component:
123 | - component: {fileID: 66738268}
124 | - component: {fileID: 66738270}
125 | - component: {fileID: 66738269}
126 | m_Layer: 5
127 | m_Name: Flag1
128 | m_TagString: Untagged
129 | m_Icon: {fileID: 0}
130 | m_NavMeshLayer: 0
131 | m_StaticEditorFlags: 0
132 | m_IsActive: 1
133 | --- !u!224 &66738268
134 | RectTransform:
135 | m_ObjectHideFlags: 0
136 | m_CorrespondingSourceObject: {fileID: 0}
137 | m_PrefabInstance: {fileID: 0}
138 | m_PrefabAsset: {fileID: 0}
139 | m_GameObject: {fileID: 66738267}
140 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
141 | m_LocalPosition: {x: 0, y: 0, z: 0}
142 | m_LocalScale: {x: 1, y: 1, z: 1}
143 | m_Children: []
144 | m_Father: {fileID: 251592550}
145 | m_RootOrder: 0
146 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
147 | m_AnchorMin: {x: 0.5, y: 0.5}
148 | m_AnchorMax: {x: 0.5, y: 0.5}
149 | m_AnchoredPosition: {x: 267, y: -191}
150 | m_SizeDelta: {x: 256, y: 256}
151 | m_Pivot: {x: 0.5, y: 0.5}
152 | --- !u!114 &66738269
153 | MonoBehaviour:
154 | m_ObjectHideFlags: 0
155 | m_CorrespondingSourceObject: {fileID: 0}
156 | m_PrefabInstance: {fileID: 0}
157 | m_PrefabAsset: {fileID: 0}
158 | m_GameObject: {fileID: 66738267}
159 | m_Enabled: 1
160 | m_EditorHideFlags: 0
161 | m_Script: {fileID: -98529514, guid: f70555f144d8491a825f0804e09c671c, type: 3}
162 | m_Name:
163 | m_EditorClassIdentifier:
164 | m_Material: {fileID: 0}
165 | m_Color: {r: 1, g: 1, b: 1, a: 1}
166 | m_RaycastTarget: 1
167 | m_OnCullStateChanged:
168 | m_PersistentCalls:
169 | m_Calls: []
170 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
171 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
172 | m_Texture: {fileID: 2800000, guid: c6f34a2439ff7402fb737fc2ce917123, type: 3}
173 | m_UVRect:
174 | serializedVersion: 2
175 | x: 0
176 | y: 0
177 | width: 1
178 | height: 1
179 | --- !u!222 &66738270
180 | CanvasRenderer:
181 | m_ObjectHideFlags: 0
182 | m_CorrespondingSourceObject: {fileID: 0}
183 | m_PrefabInstance: {fileID: 0}
184 | m_PrefabAsset: {fileID: 0}
185 | m_GameObject: {fileID: 66738267}
186 | m_CullTransparentMesh: 0
187 | --- !u!1 &124028182
188 | GameObject:
189 | m_ObjectHideFlags: 0
190 | m_CorrespondingSourceObject: {fileID: 0}
191 | m_PrefabInstance: {fileID: 0}
192 | m_PrefabAsset: {fileID: 0}
193 | serializedVersion: 6
194 | m_Component:
195 | - component: {fileID: 124028183}
196 | - component: {fileID: 124028185}
197 | - component: {fileID: 124028184}
198 | m_Layer: 5
199 | m_Name: Fruit3
200 | m_TagString: Untagged
201 | m_Icon: {fileID: 0}
202 | m_NavMeshLayer: 0
203 | m_StaticEditorFlags: 0
204 | m_IsActive: 1
205 | --- !u!224 &124028183
206 | RectTransform:
207 | m_ObjectHideFlags: 0
208 | m_CorrespondingSourceObject: {fileID: 0}
209 | m_PrefabInstance: {fileID: 0}
210 | m_PrefabAsset: {fileID: 0}
211 | m_GameObject: {fileID: 124028182}
212 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
213 | m_LocalPosition: {x: 0, y: 0, z: 0}
214 | m_LocalScale: {x: 1, y: 1, z: 1}
215 | m_Children: []
216 | m_Father: {fileID: 251592550}
217 | m_RootOrder: 4
218 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
219 | m_AnchorMin: {x: 0.5, y: 0.5}
220 | m_AnchorMax: {x: 0.5, y: 0.5}
221 | m_AnchoredPosition: {x: 305, y: 196}
222 | m_SizeDelta: {x: 180, y: 160}
223 | m_Pivot: {x: 0.5, y: 0.5}
224 | --- !u!114 &124028184
225 | MonoBehaviour:
226 | m_ObjectHideFlags: 0
227 | m_CorrespondingSourceObject: {fileID: 0}
228 | m_PrefabInstance: {fileID: 0}
229 | m_PrefabAsset: {fileID: 0}
230 | m_GameObject: {fileID: 124028182}
231 | m_Enabled: 1
232 | m_EditorHideFlags: 0
233 | m_Script: {fileID: -98529514, guid: f70555f144d8491a825f0804e09c671c, type: 3}
234 | m_Name:
235 | m_EditorClassIdentifier:
236 | m_Material: {fileID: 0}
237 | m_Color: {r: 1, g: 1, b: 1, a: 1}
238 | m_RaycastTarget: 1
239 | m_OnCullStateChanged:
240 | m_PersistentCalls:
241 | m_Calls: []
242 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
243 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
244 | m_Texture: {fileID: 2800000, guid: 6dcac6b2b8a704d91a0e1a1f27036fd2, type: 3}
245 | m_UVRect:
246 | serializedVersion: 2
247 | x: 0
248 | y: 0
249 | width: 1
250 | height: 1
251 | --- !u!222 &124028185
252 | CanvasRenderer:
253 | m_ObjectHideFlags: 0
254 | m_CorrespondingSourceObject: {fileID: 0}
255 | m_PrefabInstance: {fileID: 0}
256 | m_PrefabAsset: {fileID: 0}
257 | m_GameObject: {fileID: 124028182}
258 | m_CullTransparentMesh: 0
259 | --- !u!1 &251592546
260 | GameObject:
261 | m_ObjectHideFlags: 0
262 | m_CorrespondingSourceObject: {fileID: 0}
263 | m_PrefabInstance: {fileID: 0}
264 | m_PrefabAsset: {fileID: 0}
265 | serializedVersion: 6
266 | m_Component:
267 | - component: {fileID: 251592550}
268 | - component: {fileID: 251592549}
269 | - component: {fileID: 251592548}
270 | - component: {fileID: 251592547}
271 | m_Layer: 5
272 | m_Name: Canvas
273 | m_TagString: Untagged
274 | m_Icon: {fileID: 0}
275 | m_NavMeshLayer: 0
276 | m_StaticEditorFlags: 0
277 | m_IsActive: 1
278 | --- !u!114 &251592547
279 | MonoBehaviour:
280 | m_ObjectHideFlags: 0
281 | m_CorrespondingSourceObject: {fileID: 0}
282 | m_PrefabInstance: {fileID: 0}
283 | m_PrefabAsset: {fileID: 0}
284 | m_GameObject: {fileID: 251592546}
285 | m_Enabled: 1
286 | m_EditorHideFlags: 0
287 | m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3}
288 | m_Name:
289 | m_EditorClassIdentifier:
290 | m_IgnoreReversedGraphics: 1
291 | m_BlockingObjects: 0
292 | m_BlockingMask:
293 | serializedVersion: 2
294 | m_Bits: 4294967295
295 | --- !u!114 &251592548
296 | MonoBehaviour:
297 | m_ObjectHideFlags: 0
298 | m_CorrespondingSourceObject: {fileID: 0}
299 | m_PrefabInstance: {fileID: 0}
300 | m_PrefabAsset: {fileID: 0}
301 | m_GameObject: {fileID: 251592546}
302 | m_Enabled: 1
303 | m_EditorHideFlags: 0
304 | m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3}
305 | m_Name:
306 | m_EditorClassIdentifier:
307 | m_UiScaleMode: 0
308 | m_ReferencePixelsPerUnit: 100
309 | m_ScaleFactor: 1
310 | m_ReferenceResolution: {x: 800, y: 600}
311 | m_ScreenMatchMode: 0
312 | m_MatchWidthOrHeight: 0
313 | m_PhysicalUnit: 3
314 | m_FallbackScreenDPI: 96
315 | m_DefaultSpriteDPI: 96
316 | m_DynamicPixelsPerUnit: 1
317 | --- !u!223 &251592549
318 | Canvas:
319 | m_ObjectHideFlags: 0
320 | m_CorrespondingSourceObject: {fileID: 0}
321 | m_PrefabInstance: {fileID: 0}
322 | m_PrefabAsset: {fileID: 0}
323 | m_GameObject: {fileID: 251592546}
324 | m_Enabled: 1
325 | serializedVersion: 3
326 | m_RenderMode: 0
327 | m_Camera: {fileID: 0}
328 | m_PlaneDistance: 100
329 | m_PixelPerfect: 0
330 | m_ReceivesEvents: 1
331 | m_OverrideSorting: 0
332 | m_OverridePixelPerfect: 0
333 | m_SortingBucketNormalizedSize: 0
334 | m_AdditionalShaderChannelsFlag: 0
335 | m_SortingLayerID: 0
336 | m_SortingOrder: 0
337 | m_TargetDisplay: 0
338 | --- !u!224 &251592550
339 | RectTransform:
340 | m_ObjectHideFlags: 0
341 | m_CorrespondingSourceObject: {fileID: 0}
342 | m_PrefabInstance: {fileID: 0}
343 | m_PrefabAsset: {fileID: 0}
344 | m_GameObject: {fileID: 251592546}
345 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
346 | m_LocalPosition: {x: 0, y: 0, z: 0}
347 | m_LocalScale: {x: 0, y: 0, z: 0}
348 | m_Children:
349 | - {fileID: 66738268}
350 | - {fileID: 1180237253}
351 | - {fileID: 860987515}
352 | - {fileID: 1083504353}
353 | - {fileID: 124028183}
354 | m_Father: {fileID: 585987112}
355 | m_RootOrder: 0
356 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
357 | m_AnchorMin: {x: 0, y: 0}
358 | m_AnchorMax: {x: 0, y: 0}
359 | m_AnchoredPosition: {x: 0, y: 0}
360 | m_SizeDelta: {x: 0, y: 0}
361 | m_Pivot: {x: 0, y: 0}
362 | --- !u!1 &534669902
363 | GameObject:
364 | m_ObjectHideFlags: 0
365 | m_CorrespondingSourceObject: {fileID: 0}
366 | m_PrefabInstance: {fileID: 0}
367 | m_PrefabAsset: {fileID: 0}
368 | serializedVersion: 6
369 | m_Component:
370 | - component: {fileID: 534669905}
371 | - component: {fileID: 534669904}
372 | - component: {fileID: 534669903}
373 | m_Layer: 0
374 | m_Name: Main Camera
375 | m_TagString: MainCamera
376 | m_Icon: {fileID: 0}
377 | m_NavMeshLayer: 0
378 | m_StaticEditorFlags: 0
379 | m_IsActive: 1
380 | --- !u!81 &534669903
381 | AudioListener:
382 | m_ObjectHideFlags: 0
383 | m_CorrespondingSourceObject: {fileID: 0}
384 | m_PrefabInstance: {fileID: 0}
385 | m_PrefabAsset: {fileID: 0}
386 | m_GameObject: {fileID: 534669902}
387 | m_Enabled: 1
388 | --- !u!20 &534669904
389 | Camera:
390 | m_ObjectHideFlags: 0
391 | m_CorrespondingSourceObject: {fileID: 0}
392 | m_PrefabInstance: {fileID: 0}
393 | m_PrefabAsset: {fileID: 0}
394 | m_GameObject: {fileID: 534669902}
395 | m_Enabled: 1
396 | serializedVersion: 2
397 | m_ClearFlags: 2
398 | m_BackGroundColor: {r: 0.6037736, g: 0.6037736, b: 0.6037736, a: 0}
399 | m_projectionMatrixMode: 1
400 | m_SensorSize: {x: 36, y: 24}
401 | m_LensShift: {x: 0, y: 0}
402 | m_GateFitMode: 2
403 | m_FocalLength: 50
404 | m_NormalizedViewPortRect:
405 | serializedVersion: 2
406 | x: 0
407 | y: 0
408 | width: 1
409 | height: 1
410 | near clip plane: 0.3
411 | far clip plane: 1000
412 | field of view: 60
413 | orthographic: 0
414 | orthographic size: 5
415 | m_Depth: -1
416 | m_CullingMask:
417 | serializedVersion: 2
418 | m_Bits: 4294967295
419 | m_RenderingPath: -1
420 | m_TargetTexture: {fileID: 0}
421 | m_TargetDisplay: 0
422 | m_TargetEye: 3
423 | m_HDR: 1
424 | m_AllowMSAA: 1
425 | m_AllowDynamicResolution: 0
426 | m_ForceIntoRT: 0
427 | m_OcclusionCulling: 1
428 | m_StereoConvergence: 10
429 | m_StereoSeparation: 0.022
430 | --- !u!4 &534669905
431 | Transform:
432 | m_ObjectHideFlags: 0
433 | m_CorrespondingSourceObject: {fileID: 0}
434 | m_PrefabInstance: {fileID: 0}
435 | m_PrefabAsset: {fileID: 0}
436 | m_GameObject: {fileID: 534669902}
437 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
438 | m_LocalPosition: {x: 0, y: 1, z: -10}
439 | m_LocalScale: {x: 1, y: 1, z: 1}
440 | m_Children: []
441 | m_Father: {fileID: 0}
442 | m_RootOrder: 0
443 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
444 | --- !u!1 &585987111
445 | GameObject:
446 | m_ObjectHideFlags: 0
447 | m_CorrespondingSourceObject: {fileID: 0}
448 | m_PrefabInstance: {fileID: 0}
449 | m_PrefabAsset: {fileID: 0}
450 | serializedVersion: 6
451 | m_Component:
452 | - component: {fileID: 585987112}
453 | m_Layer: 0
454 | m_Name: UI
455 | m_TagString: Untagged
456 | m_Icon: {fileID: 0}
457 | m_NavMeshLayer: 0
458 | m_StaticEditorFlags: 0
459 | m_IsActive: 1
460 | --- !u!4 &585987112
461 | Transform:
462 | m_ObjectHideFlags: 0
463 | m_CorrespondingSourceObject: {fileID: 0}
464 | m_PrefabInstance: {fileID: 0}
465 | m_PrefabAsset: {fileID: 0}
466 | m_GameObject: {fileID: 585987111}
467 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
468 | m_LocalPosition: {x: 529.6157, y: 379.17175, z: 17.661573}
469 | m_LocalScale: {x: 1, y: 1, z: 1}
470 | m_Children:
471 | - {fileID: 251592550}
472 | - {fileID: 1424863092}
473 | m_Father: {fileID: 0}
474 | m_RootOrder: 2
475 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
476 | --- !u!1 &860987514
477 | GameObject:
478 | m_ObjectHideFlags: 0
479 | m_CorrespondingSourceObject: {fileID: 0}
480 | m_PrefabInstance: {fileID: 0}
481 | m_PrefabAsset: {fileID: 0}
482 | serializedVersion: 6
483 | m_Component:
484 | - component: {fileID: 860987515}
485 | - component: {fileID: 860987517}
486 | - component: {fileID: 860987516}
487 | m_Layer: 5
488 | m_Name: Fruit1
489 | m_TagString: Untagged
490 | m_Icon: {fileID: 0}
491 | m_NavMeshLayer: 0
492 | m_StaticEditorFlags: 0
493 | m_IsActive: 1
494 | --- !u!224 &860987515
495 | RectTransform:
496 | m_ObjectHideFlags: 0
497 | m_CorrespondingSourceObject: {fileID: 0}
498 | m_PrefabInstance: {fileID: 0}
499 | m_PrefabAsset: {fileID: 0}
500 | m_GameObject: {fileID: 860987514}
501 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
502 | m_LocalPosition: {x: 0, y: 0, z: 0}
503 | m_LocalScale: {x: 1, y: 1, z: 1}
504 | m_Children: []
505 | m_Father: {fileID: 251592550}
506 | m_RootOrder: 2
507 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
508 | m_AnchorMin: {x: 0.5, y: 0.5}
509 | m_AnchorMax: {x: 0.5, y: 0.5}
510 | m_AnchoredPosition: {x: -79, y: -239}
511 | m_SizeDelta: {x: 180, y: 160}
512 | m_Pivot: {x: 0.5, y: 0.5}
513 | --- !u!114 &860987516
514 | MonoBehaviour:
515 | m_ObjectHideFlags: 0
516 | m_CorrespondingSourceObject: {fileID: 0}
517 | m_PrefabInstance: {fileID: 0}
518 | m_PrefabAsset: {fileID: 0}
519 | m_GameObject: {fileID: 860987514}
520 | m_Enabled: 1
521 | m_EditorHideFlags: 0
522 | m_Script: {fileID: -98529514, guid: f70555f144d8491a825f0804e09c671c, type: 3}
523 | m_Name:
524 | m_EditorClassIdentifier:
525 | m_Material: {fileID: 0}
526 | m_Color: {r: 1, g: 1, b: 1, a: 1}
527 | m_RaycastTarget: 1
528 | m_OnCullStateChanged:
529 | m_PersistentCalls:
530 | m_Calls: []
531 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
532 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
533 | m_Texture: {fileID: 2800000, guid: 346cb0e908ef0497abf3facf45a6b5e9, type: 3}
534 | m_UVRect:
535 | serializedVersion: 2
536 | x: 0
537 | y: 0
538 | width: 1
539 | height: 1
540 | --- !u!222 &860987517
541 | CanvasRenderer:
542 | m_ObjectHideFlags: 0
543 | m_CorrespondingSourceObject: {fileID: 0}
544 | m_PrefabInstance: {fileID: 0}
545 | m_PrefabAsset: {fileID: 0}
546 | m_GameObject: {fileID: 860987514}
547 | m_CullTransparentMesh: 0
548 | --- !u!1 &1042984420
549 | GameObject:
550 | m_ObjectHideFlags: 0
551 | m_CorrespondingSourceObject: {fileID: 0}
552 | m_PrefabInstance: {fileID: 0}
553 | m_PrefabAsset: {fileID: 0}
554 | serializedVersion: 6
555 | m_Component:
556 | - component: {fileID: 1042984422}
557 | - component: {fileID: 1042984423}
558 | m_Layer: 0
559 | m_Name: Main
560 | m_TagString: Untagged
561 | m_Icon: {fileID: 0}
562 | m_NavMeshLayer: 0
563 | m_StaticEditorFlags: 0
564 | m_IsActive: 1
565 | --- !u!4 &1042984422
566 | Transform:
567 | m_ObjectHideFlags: 0
568 | m_CorrespondingSourceObject: {fileID: 0}
569 | m_PrefabInstance: {fileID: 0}
570 | m_PrefabAsset: {fileID: 0}
571 | m_GameObject: {fileID: 1042984420}
572 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
573 | m_LocalPosition: {x: 529.6157, y: 379.17175, z: 17.661573}
574 | m_LocalScale: {x: 1, y: 1, z: 1}
575 | m_Children: []
576 | m_Father: {fileID: 0}
577 | m_RootOrder: 1
578 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
579 | --- !u!114 &1042984423
580 | MonoBehaviour:
581 | m_ObjectHideFlags: 0
582 | m_CorrespondingSourceObject: {fileID: 0}
583 | m_PrefabInstance: {fileID: 0}
584 | m_PrefabAsset: {fileID: 0}
585 | m_GameObject: {fileID: 1042984420}
586 | m_Enabled: 1
587 | m_EditorHideFlags: 0
588 | m_Script: {fileID: 11500000, guid: b6ff3b7e4068a4a188aeb25a1fc73f36, type: 3}
589 | m_Name:
590 | m_EditorClassIdentifier:
591 | flag1: {fileID: 66738269}
592 | flag2: {fileID: 1180237254}
593 | fruit1: {fileID: 860987516}
594 | fruit2: {fileID: 1083504354}
595 | fruit3: {fileID: 124028184}
596 | --- !u!1 &1083504352
597 | GameObject:
598 | m_ObjectHideFlags: 0
599 | m_CorrespondingSourceObject: {fileID: 0}
600 | m_PrefabInstance: {fileID: 0}
601 | m_PrefabAsset: {fileID: 0}
602 | serializedVersion: 6
603 | m_Component:
604 | - component: {fileID: 1083504353}
605 | - component: {fileID: 1083504355}
606 | - component: {fileID: 1083504354}
607 | m_Layer: 5
608 | m_Name: Fruit2
609 | m_TagString: Untagged
610 | m_Icon: {fileID: 0}
611 | m_NavMeshLayer: 0
612 | m_StaticEditorFlags: 0
613 | m_IsActive: 1
614 | --- !u!224 &1083504353
615 | RectTransform:
616 | m_ObjectHideFlags: 0
617 | m_CorrespondingSourceObject: {fileID: 0}
618 | m_PrefabInstance: {fileID: 0}
619 | m_PrefabAsset: {fileID: 0}
620 | m_GameObject: {fileID: 1083504352}
621 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
622 | m_LocalPosition: {x: 0, y: 0, z: 0}
623 | m_LocalScale: {x: 1, y: 1, z: 1}
624 | m_Children: []
625 | m_Father: {fileID: 251592550}
626 | m_RootOrder: 3
627 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
628 | m_AnchorMin: {x: 0.5, y: 0.5}
629 | m_AnchorMax: {x: 0.5, y: 0.5}
630 | m_AnchoredPosition: {x: -329, y: -239}
631 | m_SizeDelta: {x: 180, y: 160}
632 | m_Pivot: {x: 0.5, y: 0.5}
633 | --- !u!114 &1083504354
634 | MonoBehaviour:
635 | m_ObjectHideFlags: 0
636 | m_CorrespondingSourceObject: {fileID: 0}
637 | m_PrefabInstance: {fileID: 0}
638 | m_PrefabAsset: {fileID: 0}
639 | m_GameObject: {fileID: 1083504352}
640 | m_Enabled: 1
641 | m_EditorHideFlags: 0
642 | m_Script: {fileID: -98529514, guid: f70555f144d8491a825f0804e09c671c, type: 3}
643 | m_Name:
644 | m_EditorClassIdentifier:
645 | m_Material: {fileID: 0}
646 | m_Color: {r: 1, g: 1, b: 1, a: 1}
647 | m_RaycastTarget: 1
648 | m_OnCullStateChanged:
649 | m_PersistentCalls:
650 | m_Calls: []
651 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
652 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
653 | m_Texture: {fileID: 2800000, guid: 01dedd200c8234d5b9dab12dc8c5735e, type: 3}
654 | m_UVRect:
655 | serializedVersion: 2
656 | x: 0
657 | y: 0
658 | width: 1
659 | height: 1
660 | --- !u!222 &1083504355
661 | CanvasRenderer:
662 | m_ObjectHideFlags: 0
663 | m_CorrespondingSourceObject: {fileID: 0}
664 | m_PrefabInstance: {fileID: 0}
665 | m_PrefabAsset: {fileID: 0}
666 | m_GameObject: {fileID: 1083504352}
667 | m_CullTransparentMesh: 0
668 | --- !u!1 &1180237252
669 | GameObject:
670 | m_ObjectHideFlags: 0
671 | m_CorrespondingSourceObject: {fileID: 0}
672 | m_PrefabInstance: {fileID: 0}
673 | m_PrefabAsset: {fileID: 0}
674 | serializedVersion: 6
675 | m_Component:
676 | - component: {fileID: 1180237253}
677 | - component: {fileID: 1180237255}
678 | - component: {fileID: 1180237254}
679 | m_Layer: 5
680 | m_Name: Flag2
681 | m_TagString: Untagged
682 | m_Icon: {fileID: 0}
683 | m_NavMeshLayer: 0
684 | m_StaticEditorFlags: 0
685 | m_IsActive: 1
686 | --- !u!224 &1180237253
687 | RectTransform:
688 | m_ObjectHideFlags: 0
689 | m_CorrespondingSourceObject: {fileID: 0}
690 | m_PrefabInstance: {fileID: 0}
691 | m_PrefabAsset: {fileID: 0}
692 | m_GameObject: {fileID: 1180237252}
693 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
694 | m_LocalPosition: {x: 0, y: 0, z: 0}
695 | m_LocalScale: {x: 1, y: 1, z: 1}
696 | m_Children: []
697 | m_Father: {fileID: 251592550}
698 | m_RootOrder: 1
699 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
700 | m_AnchorMin: {x: 0.5, y: 0.5}
701 | m_AnchorMax: {x: 0.5, y: 0.5}
702 | m_AnchoredPosition: {x: -207, y: 50}
703 | m_SizeDelta: {x: 256, y: 256}
704 | m_Pivot: {x: 0.5, y: 0.5}
705 | --- !u!114 &1180237254
706 | MonoBehaviour:
707 | m_ObjectHideFlags: 0
708 | m_CorrespondingSourceObject: {fileID: 0}
709 | m_PrefabInstance: {fileID: 0}
710 | m_PrefabAsset: {fileID: 0}
711 | m_GameObject: {fileID: 1180237252}
712 | m_Enabled: 1
713 | m_EditorHideFlags: 0
714 | m_Script: {fileID: -98529514, guid: f70555f144d8491a825f0804e09c671c, type: 3}
715 | m_Name:
716 | m_EditorClassIdentifier:
717 | m_Material: {fileID: 0}
718 | m_Color: {r: 1, g: 1, b: 1, a: 1}
719 | m_RaycastTarget: 1
720 | m_OnCullStateChanged:
721 | m_PersistentCalls:
722 | m_Calls: []
723 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
724 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
725 | m_Texture: {fileID: 2800000, guid: 8334e2f462f384b4d9b0cfe9d8601366, type: 3}
726 | m_UVRect:
727 | serializedVersion: 2
728 | x: 0
729 | y: 0
730 | width: 1
731 | height: 1
732 | --- !u!222 &1180237255
733 | CanvasRenderer:
734 | m_ObjectHideFlags: 0
735 | m_CorrespondingSourceObject: {fileID: 0}
736 | m_PrefabInstance: {fileID: 0}
737 | m_PrefabAsset: {fileID: 0}
738 | m_GameObject: {fileID: 1180237252}
739 | m_CullTransparentMesh: 0
740 | --- !u!1 &1424863089
741 | GameObject:
742 | m_ObjectHideFlags: 0
743 | m_CorrespondingSourceObject: {fileID: 0}
744 | m_PrefabInstance: {fileID: 0}
745 | m_PrefabAsset: {fileID: 0}
746 | serializedVersion: 6
747 | m_Component:
748 | - component: {fileID: 1424863092}
749 | - component: {fileID: 1424863091}
750 | - component: {fileID: 1424863090}
751 | m_Layer: 0
752 | m_Name: EventSystem
753 | m_TagString: Untagged
754 | m_Icon: {fileID: 0}
755 | m_NavMeshLayer: 0
756 | m_StaticEditorFlags: 0
757 | m_IsActive: 1
758 | --- !u!114 &1424863090
759 | MonoBehaviour:
760 | m_ObjectHideFlags: 0
761 | m_CorrespondingSourceObject: {fileID: 0}
762 | m_PrefabInstance: {fileID: 0}
763 | m_PrefabAsset: {fileID: 0}
764 | m_GameObject: {fileID: 1424863089}
765 | m_Enabled: 1
766 | m_EditorHideFlags: 0
767 | m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3}
768 | m_Name:
769 | m_EditorClassIdentifier:
770 | m_HorizontalAxis: Horizontal
771 | m_VerticalAxis: Vertical
772 | m_SubmitButton: Submit
773 | m_CancelButton: Cancel
774 | m_InputActionsPerSecond: 10
775 | m_RepeatDelay: 0.5
776 | m_ForceModuleActive: 0
777 | --- !u!114 &1424863091
778 | MonoBehaviour:
779 | m_ObjectHideFlags: 0
780 | m_CorrespondingSourceObject: {fileID: 0}
781 | m_PrefabInstance: {fileID: 0}
782 | m_PrefabAsset: {fileID: 0}
783 | m_GameObject: {fileID: 1424863089}
784 | m_Enabled: 1
785 | m_EditorHideFlags: 0
786 | m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3}
787 | m_Name:
788 | m_EditorClassIdentifier:
789 | m_FirstSelected: {fileID: 0}
790 | m_sendNavigationEvents: 1
791 | m_DragThreshold: 10
792 | --- !u!4 &1424863092
793 | Transform:
794 | m_ObjectHideFlags: 0
795 | m_CorrespondingSourceObject: {fileID: 0}
796 | m_PrefabInstance: {fileID: 0}
797 | m_PrefabAsset: {fileID: 0}
798 | m_GameObject: {fileID: 1424863089}
799 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
800 | m_LocalPosition: {x: -529.6157, y: -379.17175, z: -17.661573}
801 | m_LocalScale: {x: 1, y: 1, z: 1}
802 | m_Children: []
803 | m_Father: {fileID: 585987112}
804 | m_RootOrder: 1
805 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
806 |
--------------------------------------------------------------------------------
/Assets/Example/Example.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c288351a2c3b14089bca55981a3fc480
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Example/Resources.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 56b372fafd55943dda70c740ba965abf
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Example/Resources/Flag.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 216d5b146446446c3b88d5f408af11f1
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Example/Resources/Flag/celestial.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Assets/Example/Resources/Flag/celestial.jpg
--------------------------------------------------------------------------------
/Assets/Example/Resources/Flag/celestial.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8334e2f462f384b4d9b0cfe9d8601366
3 | TextureImporter:
4 | fileIDToRecycleName: {}
5 | externalObjects: {}
6 | serializedVersion: 9
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: -1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 2
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 2048
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 1
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | - serializedVersion: 2
73 | buildTarget: Standalone
74 | maxTextureSize: 2048
75 | resizeAlgorithm: 0
76 | textureFormat: -1
77 | textureCompression: 1
78 | compressionQuality: 50
79 | crunchedCompression: 0
80 | allowsAlphaSplitting: 0
81 | overridden: 0
82 | androidETC2FallbackOverride: 0
83 | spriteSheet:
84 | serializedVersion: 2
85 | sprites: []
86 | outline: []
87 | physicsShape: []
88 | bones: []
89 | spriteID:
90 | vertices: []
91 | indices:
92 | edges: []
93 | weights: []
94 | spritePackingTag:
95 | pSDRemoveMatte: 0
96 | pSDShowRemoveMatteOption: 0
97 | userData:
98 | assetBundleName:
99 | assetBundleVariant:
100 |
--------------------------------------------------------------------------------
/Assets/Example/Resources/Flag/flower.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Assets/Example/Resources/Flag/flower.jpg
--------------------------------------------------------------------------------
/Assets/Example/Resources/Flag/flower.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a5b88e942f5154f1c975e2de5b93c287
3 | TextureImporter:
4 | fileIDToRecycleName: {}
5 | externalObjects: {}
6 | serializedVersion: 9
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: -1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 2
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 2048
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 1
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | - serializedVersion: 2
73 | buildTarget: Standalone
74 | maxTextureSize: 2048
75 | resizeAlgorithm: 0
76 | textureFormat: -1
77 | textureCompression: 1
78 | compressionQuality: 50
79 | crunchedCompression: 0
80 | allowsAlphaSplitting: 0
81 | overridden: 0
82 | androidETC2FallbackOverride: 0
83 | spriteSheet:
84 | serializedVersion: 2
85 | sprites: []
86 | outline: []
87 | physicsShape: []
88 | bones: []
89 | spriteID:
90 | vertices: []
91 | indices:
92 | edges: []
93 | weights: []
94 | spritePackingTag:
95 | pSDRemoveMatte: 0
96 | pSDShowRemoveMatteOption: 0
97 | userData:
98 | assetBundleName:
99 | assetBundleVariant:
100 |
--------------------------------------------------------------------------------
/Assets/Example/Resources/Flag/greendragon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Assets/Example/Resources/Flag/greendragon.jpg
--------------------------------------------------------------------------------
/Assets/Example/Resources/Flag/greendragon.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e49e67c1bd8894de5b806ece5d3bb2c4
3 | TextureImporter:
4 | fileIDToRecycleName: {}
5 | externalObjects: {}
6 | serializedVersion: 9
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: -1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 2
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 2048
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 1
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | - serializedVersion: 2
73 | buildTarget: Standalone
74 | maxTextureSize: 2048
75 | resizeAlgorithm: 0
76 | textureFormat: -1
77 | textureCompression: 1
78 | compressionQuality: 50
79 | crunchedCompression: 0
80 | allowsAlphaSplitting: 0
81 | overridden: 0
82 | androidETC2FallbackOverride: 0
83 | spriteSheet:
84 | serializedVersion: 2
85 | sprites: []
86 | outline: []
87 | physicsShape: []
88 | bones: []
89 | spriteID:
90 | vertices: []
91 | indices:
92 | edges: []
93 | weights: []
94 | spritePackingTag:
95 | pSDRemoveMatte: 0
96 | pSDShowRemoveMatteOption: 0
97 | userData:
98 | assetBundleName:
99 | assetBundleVariant:
100 |
--------------------------------------------------------------------------------
/Assets/Example/Resources/Flag/treeolife.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Assets/Example/Resources/Flag/treeolife.jpg
--------------------------------------------------------------------------------
/Assets/Example/Resources/Flag/treeolife.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c6f34a2439ff7402fb737fc2ce917123
3 | TextureImporter:
4 | fileIDToRecycleName: {}
5 | externalObjects: {}
6 | serializedVersion: 9
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: -1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 2
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 2048
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 1
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | - serializedVersion: 2
73 | buildTarget: Standalone
74 | maxTextureSize: 2048
75 | resizeAlgorithm: 0
76 | textureFormat: -1
77 | textureCompression: 1
78 | compressionQuality: 50
79 | crunchedCompression: 0
80 | allowsAlphaSplitting: 0
81 | overridden: 0
82 | androidETC2FallbackOverride: 0
83 | spriteSheet:
84 | serializedVersion: 2
85 | sprites: []
86 | outline: []
87 | physicsShape: []
88 | bones: []
89 | spriteID:
90 | vertices: []
91 | indices:
92 | edges: []
93 | weights: []
94 | spritePackingTag:
95 | pSDRemoveMatte: 0
96 | pSDShowRemoveMatteOption: 0
97 | userData:
98 | assetBundleName:
99 | assetBundleVariant:
100 |
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: eaccf9e19c82f469aa6e971a37855001
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 569d524b4001f45738741159da25814d
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Assets/Example/StreamingAssets/Fruit/Fruit_1.png
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_1.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: eb18078aafeac4679be768be450cfa45
3 | TextureImporter:
4 | fileIDToRecycleName: {}
5 | externalObjects: {}
6 | serializedVersion: 9
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: -1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 2
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 2048
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 1
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | - serializedVersion: 2
73 | buildTarget: Standalone
74 | maxTextureSize: 2048
75 | resizeAlgorithm: 0
76 | textureFormat: -1
77 | textureCompression: 1
78 | compressionQuality: 50
79 | crunchedCompression: 0
80 | allowsAlphaSplitting: 0
81 | overridden: 0
82 | androidETC2FallbackOverride: 0
83 | spriteSheet:
84 | serializedVersion: 2
85 | sprites: []
86 | outline: []
87 | physicsShape: []
88 | bones: []
89 | spriteID:
90 | vertices: []
91 | indices:
92 | edges: []
93 | weights: []
94 | spritePackingTag:
95 | pSDRemoveMatte: 0
96 | pSDShowRemoveMatteOption: 0
97 | userData:
98 | assetBundleName:
99 | assetBundleVariant:
100 |
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Assets/Example/StreamingAssets/Fruit/Fruit_2.png
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_2.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6dcac6b2b8a704d91a0e1a1f27036fd2
3 | TextureImporter:
4 | fileIDToRecycleName: {}
5 | externalObjects: {}
6 | serializedVersion: 9
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: -1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 2
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 2048
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 1
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | - serializedVersion: 2
73 | buildTarget: Standalone
74 | maxTextureSize: 2048
75 | resizeAlgorithm: 0
76 | textureFormat: -1
77 | textureCompression: 1
78 | compressionQuality: 50
79 | crunchedCompression: 0
80 | allowsAlphaSplitting: 0
81 | overridden: 0
82 | androidETC2FallbackOverride: 0
83 | spriteSheet:
84 | serializedVersion: 2
85 | sprites: []
86 | outline: []
87 | physicsShape: []
88 | bones: []
89 | spriteID:
90 | vertices: []
91 | indices:
92 | edges: []
93 | weights: []
94 | spritePackingTag:
95 | pSDRemoveMatte: 0
96 | pSDShowRemoveMatteOption: 0
97 | userData:
98 | assetBundleName:
99 | assetBundleVariant:
100 |
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Assets/Example/StreamingAssets/Fruit/Fruit_3.png
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_3.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 01dedd200c8234d5b9dab12dc8c5735e
3 | TextureImporter:
4 | fileIDToRecycleName: {}
5 | externalObjects: {}
6 | serializedVersion: 9
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: -1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 2
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 2048
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 1
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | - serializedVersion: 2
73 | buildTarget: Standalone
74 | maxTextureSize: 2048
75 | resizeAlgorithm: 0
76 | textureFormat: -1
77 | textureCompression: 1
78 | compressionQuality: 50
79 | crunchedCompression: 0
80 | allowsAlphaSplitting: 0
81 | overridden: 0
82 | androidETC2FallbackOverride: 0
83 | spriteSheet:
84 | serializedVersion: 2
85 | sprites: []
86 | outline: []
87 | physicsShape: []
88 | bones: []
89 | spriteID:
90 | vertices: []
91 | indices:
92 | edges: []
93 | weights: []
94 | spritePackingTag:
95 | pSDRemoveMatte: 0
96 | pSDShowRemoveMatteOption: 0
97 | userData:
98 | assetBundleName:
99 | assetBundleVariant:
100 |
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Assets/Example/StreamingAssets/Fruit/Fruit_4.png
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_4.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8078e1dad3bc84dafbde2152c4bdd328
3 | TextureImporter:
4 | fileIDToRecycleName: {}
5 | externalObjects: {}
6 | serializedVersion: 9
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: -1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 2
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 2048
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 1
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | - serializedVersion: 2
73 | buildTarget: Standalone
74 | maxTextureSize: 2048
75 | resizeAlgorithm: 0
76 | textureFormat: -1
77 | textureCompression: 1
78 | compressionQuality: 50
79 | crunchedCompression: 0
80 | allowsAlphaSplitting: 0
81 | overridden: 0
82 | androidETC2FallbackOverride: 0
83 | spriteSheet:
84 | serializedVersion: 2
85 | sprites: []
86 | outline: []
87 | physicsShape: []
88 | bones: []
89 | spriteID:
90 | vertices: []
91 | indices:
92 | edges: []
93 | weights: []
94 | spritePackingTag:
95 | pSDRemoveMatte: 0
96 | pSDShowRemoveMatteOption: 0
97 | userData:
98 | assetBundleName:
99 | assetBundleVariant:
100 |
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Assets/Example/StreamingAssets/Fruit/Fruit_5.png
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_5.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 346cb0e908ef0497abf3facf45a6b5e9
3 | TextureImporter:
4 | fileIDToRecycleName: {}
5 | externalObjects: {}
6 | serializedVersion: 9
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: -1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 2
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 2048
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 1
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | - serializedVersion: 2
73 | buildTarget: Standalone
74 | maxTextureSize: 2048
75 | resizeAlgorithm: 0
76 | textureFormat: -1
77 | textureCompression: 1
78 | compressionQuality: 50
79 | crunchedCompression: 0
80 | allowsAlphaSplitting: 0
81 | overridden: 0
82 | androidETC2FallbackOverride: 0
83 | spriteSheet:
84 | serializedVersion: 2
85 | sprites: []
86 | outline: []
87 | physicsShape: []
88 | bones: []
89 | spriteID:
90 | vertices: []
91 | indices:
92 | edges: []
93 | weights: []
94 | spritePackingTag:
95 | pSDRemoveMatte: 0
96 | pSDShowRemoveMatteOption: 0
97 | userData:
98 | assetBundleName:
99 | assetBundleVariant:
100 |
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Assets/Example/StreamingAssets/Fruit/Fruit_6.png
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_6.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 16df1c73582184fc1b5817a8e5fa60a4
3 | TextureImporter:
4 | fileIDToRecycleName: {}
5 | externalObjects: {}
6 | serializedVersion: 9
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: -1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 2
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 2048
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 1
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | - serializedVersion: 2
73 | buildTarget: Standalone
74 | maxTextureSize: 2048
75 | resizeAlgorithm: 0
76 | textureFormat: -1
77 | textureCompression: 1
78 | compressionQuality: 50
79 | crunchedCompression: 0
80 | allowsAlphaSplitting: 0
81 | overridden: 0
82 | androidETC2FallbackOverride: 0
83 | spriteSheet:
84 | serializedVersion: 2
85 | sprites: []
86 | outline: []
87 | physicsShape: []
88 | bones: []
89 | spriteID:
90 | vertices: []
91 | indices:
92 | edges: []
93 | weights: []
94 | spritePackingTag:
95 | pSDRemoveMatte: 0
96 | pSDShowRemoveMatteOption: 0
97 | userData:
98 | assetBundleName:
99 | assetBundleVariant:
100 |
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Assets/Example/StreamingAssets/Fruit/Fruit_7.png
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_7.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c0a7a066b775943bf95e38305743b181
3 | TextureImporter:
4 | fileIDToRecycleName: {}
5 | externalObjects: {}
6 | serializedVersion: 9
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: -1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 2
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 2048
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 1
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | - serializedVersion: 2
73 | buildTarget: Standalone
74 | maxTextureSize: 2048
75 | resizeAlgorithm: 0
76 | textureFormat: -1
77 | textureCompression: 1
78 | compressionQuality: 50
79 | crunchedCompression: 0
80 | allowsAlphaSplitting: 0
81 | overridden: 0
82 | androidETC2FallbackOverride: 0
83 | spriteSheet:
84 | serializedVersion: 2
85 | sprites: []
86 | outline: []
87 | physicsShape: []
88 | bones: []
89 | spriteID:
90 | vertices: []
91 | indices:
92 | edges: []
93 | weights: []
94 | spritePackingTag:
95 | pSDRemoveMatte: 0
96 | pSDShowRemoveMatteOption: 0
97 | userData:
98 | assetBundleName:
99 | assetBundleVariant:
100 |
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Assets/Example/StreamingAssets/Fruit/Fruit_8.png
--------------------------------------------------------------------------------
/Assets/Example/StreamingAssets/Fruit/Fruit_8.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: da1003d6d1cad4a3caf3805b70f3829e
3 | TextureImporter:
4 | fileIDToRecycleName: {}
5 | externalObjects: {}
6 | serializedVersion: 9
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: -1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 2
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 2048
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 1
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | - serializedVersion: 2
73 | buildTarget: Standalone
74 | maxTextureSize: 2048
75 | resizeAlgorithm: 0
76 | textureFormat: -1
77 | textureCompression: 1
78 | compressionQuality: 50
79 | crunchedCompression: 0
80 | allowsAlphaSplitting: 0
81 | overridden: 0
82 | androidETC2FallbackOverride: 0
83 | spriteSheet:
84 | serializedVersion: 2
85 | sprites: []
86 | outline: []
87 | physicsShape: []
88 | bones: []
89 | spriteID:
90 | vertices: []
91 | indices:
92 | edges: []
93 | weights: []
94 | spritePackingTag:
95 | pSDRemoveMatte: 0
96 | pSDShowRemoveMatteOption: 0
97 | userData:
98 | assetBundleName:
99 | assetBundleVariant:
100 |
--------------------------------------------------------------------------------
/Assets/Example/main.cs:
--------------------------------------------------------------------------------
1 | using RuntimeTextureAtlas;
2 | using System.Collections;
3 | using System.IO;
4 | using UnityEngine;
5 | using UnityEngine.Networking;
6 | using UnityEngine.UI;
7 |
8 | public class main : MonoBehaviour
9 | {
10 | // ui界面控件
11 | public RawImage flag1;
12 | public RawImage flag2;
13 | public RawImage fruit1;
14 | public RawImage fruit2;
15 | public RawImage fruit3;
16 |
17 | // 图片资源路径
18 | private string[] flags;
19 | private string[] fruits;
20 |
21 | private void Start()
22 | {
23 | InitUI();
24 | ReloadUI();
25 | }
26 |
27 | private void OnGUI()
28 | {
29 | if(GUI.Button(new Rect(10, 10, 200, 60), "Reload"))
30 | {
31 | ReloadUI();
32 | }
33 | }
34 |
35 | ///
36 | /// 初始化UI资源路径
37 | ///
38 | void InitUI()
39 | {
40 | flags = new string[] { "celestial", "flower", "greendragon", "treeolife" };
41 | for(int i = 0; i < flags.Length; i++)
42 | flags[i] = Path.Combine("Flag", flags[i]);
43 |
44 | fruits = new string[8];
45 | for(int i = 0; i < 8; i++)
46 | fruits[i] = @"file://" + Path.Combine(Application.dataPath, "Example", "StreamingAssets", "Fruit", string.Format("Fruit_{0}.png", i + 1));
47 | }
48 |
49 | ///
50 | /// 重新加载UI
51 | ///
52 | private void ReloadUI()
53 | {
54 | // 随机加载两个flags图片并显示
55 | Shuffle(flags);
56 | LoadFromResources(flag1, flags[0]);
57 | LoadFromResources(flag2, flags[1]);
58 |
59 | // 随机加载三个fruits图片并显示
60 | Shuffle(fruits);
61 | StartCoroutine(LoadFromFile(fruit1, fruits[0]));
62 | StartCoroutine(LoadFromFile(fruit2, fruits[1]));
63 | StartCoroutine(LoadFromFile(fruit3, fruits[2]));
64 | }
65 |
66 | ///
67 | /// 随机打乱数组元素顺序
68 | ///
69 | private void Shuffle(string[] arr)
70 | {
71 | for(var i = 0; i < arr.Length - 1; i++)
72 | {
73 | var j = Random.Range(i, arr.Length);
74 | var temp = arr[i];
75 | arr[i] = arr[j];
76 | arr[j] = temp;
77 | }
78 | }
79 |
80 | ///
81 | /// 从Resources加载贴图
82 | ///
83 | private void LoadFromResources(RawImage image, string file)
84 | {
85 | // 同步加载贴图
86 | var texture = Resources.Load(file);
87 |
88 | // 将贴图打包到图集,并应用到RawImage控件
89 | image.PackTexture(texture);
90 | }
91 |
92 | ///
93 | /// 从外部文件加载贴图
94 | ///
95 | private IEnumerator LoadFromFile(RawImage image, string file)
96 | {
97 | // 异步加载贴图
98 | using(UnityWebRequest uwr = UnityWebRequestTexture.GetTexture(file))
99 | {
100 | yield return uwr.SendWebRequest();
101 |
102 | if(!uwr.isNetworkError && !uwr.isHttpError)
103 | {
104 | // 贴图加载完毕
105 | var texture = DownloadHandlerTexture.GetContent(uwr);
106 |
107 | // 将贴图打包到图集,并应用到RawImage控件
108 | image.PackTexture(texture,
109 | () => Destroy(texture)); // 打包成功后卸载原图
110 | }
111 | }
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/Assets/Example/main.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b6ff3b7e4068a4a188aeb25a1fc73f36
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b0c14f13ceb194c4990137ce2158433e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 405f50d23f2c2450880a18be8a6b2745
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Editor/RawImageAgentEditor.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEditor;
3 |
4 | namespace RuntimeTextureAtlas
5 | {
6 | [CustomEditor(typeof(RawImageAgent))]
7 | public class RawImageAgentEditor : Editor
8 | {
9 | public override void OnInspectorGUI()
10 | {
11 | var agent = ((RawImageAgent)target);
12 |
13 | if(agent.textureAtlas == null)
14 | return;
15 |
16 | EditorGUILayout.LabelField("SubTexture Position");
17 | EditorGUILayout.LabelField(string.Format("{0}, {1}, {2}, {3}", agent.position.x, agent.position.y, agent.position.width, agent.position.height));
18 |
19 | GUILayout.Space(10);
20 | var textureAtlas = agent.textureAtlas;
21 | var width = textureAtlas.texture.width;
22 | var height = textureAtlas.texture.height;
23 | EditorGUILayout.LabelField(string.Format("Atlas Size: {0} X {1}", width, height));
24 | EditorGUI.DrawPreviewTexture(GUILayoutUtility.GetAspectRect((float)width / height), textureAtlas.texture);
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Editor/RawImageAgentEditor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 875fc836e3b3743a5ade12af886cb31e
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Editor/TextureAtlasManagerEditor.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEditor;
3 |
4 | namespace RuntimeTextureAtlas
5 | {
6 | [CustomEditor(typeof(TextureAtlasManager))]
7 | public class TextureAtlasManagerEditor : Editor
8 | {
9 | public override void OnInspectorGUI()
10 | {
11 | serializedObject.Update();
12 |
13 | if(EditorApplication.isPlaying)
14 | {
15 | DrawPlayModeGUI();
16 | }
17 | else
18 | {
19 | DrawDefaultInspector();
20 | }
21 |
22 | serializedObject.ApplyModifiedProperties();
23 | }
24 |
25 | private void DrawPlayModeGUI()
26 | {
27 | var textureAtlas = ((TextureAtlasManager)target).textureAtlas;
28 | var width = textureAtlas.texture.width;
29 | var height = textureAtlas.texture.height;
30 |
31 | GUILayout.Space(10);
32 | EditorGUILayout.LabelField(string.Format("Atlas Size: {0} X {1}", width, height));
33 | EditorGUI.DrawPreviewTexture(GUILayoutUtility.GetAspectRect((float)width / height), textureAtlas.texture);
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Editor/TextureAtlasManagerEditor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c9913c56e252849c085371bd19e834c4
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Resources.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e54872a956d0d4b2a9682e897ae757d4
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Resources/DrawTexture.shader:
--------------------------------------------------------------------------------
1 | Shader "Hidden/RuntimeTextureAtlas/DrawTexture"
2 | {
3 | Properties
4 | {
5 | _MainTex ("Texture", 2D) = "white" {}
6 | }
7 |
8 | SubShader
9 | {
10 | Cull Off ZWrite Off ZTest Always
11 |
12 | Pass
13 | {
14 | CGPROGRAM
15 | #pragma vertex vert
16 | #pragma fragment frag
17 |
18 | #include "UnityCG.cginc"
19 |
20 | sampler2D _MainTex;
21 | float4x4 _ImageMVP;
22 |
23 | v2f_img vert (appdata_img v)
24 | {
25 | v2f_img o;
26 | o.pos = mul(_ImageMVP, v.vertex);
27 | o.uv = v.texcoord;
28 |
29 | return o;
30 | }
31 |
32 | fixed4 frag (v2f_img i) : SV_Target
33 | {
34 | return tex2D(_MainTex, i.uv);
35 | }
36 | ENDCG
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Resources/DrawTexture.shader.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d962d16354ce24eaf8af0b076c4baecf
3 | ShaderImporter:
4 | externalObjects: {}
5 | defaultTextures: []
6 | nonModifiableTextures: []
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4cc040fb01abe4b30b1fe0fcbe6bfe12
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/Packer.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9b8c4132b55634fafad2b292600b4eaf
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/Packer/Column.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace RuntimeTextureAtlas
6 | {
7 | ///
8 | /// 宽度固定的矩形(列)
9 | ///
10 | public class Column : Rectangle
11 | {
12 | ///
13 | /// 子行
14 | ///
15 | private List rows;
16 |
17 | ///
18 | /// 剩余可分配高度
19 | ///
20 | private int heightAvailable
21 | {
22 | get
23 | {
24 | if(used)
25 | return 0;
26 |
27 | if(rows == null)
28 | return position.height;
29 |
30 | int height = position.height;
31 | foreach(var row in rows)
32 | height -= row.position.height;
33 |
34 | return height;
35 | }
36 | }
37 |
38 | ///
39 | /// 构造函数
40 | ///
41 | public Column(int x, int y, int w, int h) : base(x, y, w, h)
42 | {
43 | }
44 |
45 | ///
46 | /// 插入矩形
47 | ///
48 | public override Rectangle Insert(int w, int h)
49 | {
50 | // 已被占用,无法分配
51 | if(used)
52 | return null;
53 |
54 | // 宽度不足,无法分配
55 | if(w > position.width)
56 | return null;
57 |
58 | // 尺寸完全匹配,改为占用状态
59 | if(rows == null && position.width == w && position.height == h)
60 | {
61 | used = true;
62 | return this;
63 | }
64 |
65 | if(rows == null)
66 | rows = new List();
67 |
68 | // 尝试从已有子行中分配
69 | foreach(var row in rows)
70 | {
71 | var rect = row.Insert(w, h);
72 | if(rect != null)
73 | return rect;
74 | }
75 |
76 | // 高度超过可用高度,分配失败
77 | if (h > heightAvailable)
78 | return null;
79 |
80 | // 生成新行
81 | var newRow = new Row(position.x, position.y + position.height - heightAvailable, position.width, h);
82 | rows.Add(newRow);
83 | rows.Sort((lhs, rhs) => { return lhs.position.height.CompareTo(rhs.position.height); });
84 |
85 | // 从新行中分配
86 | return newRow.Insert(w, h);
87 | }
88 |
89 | ///
90 | /// 移除矩形
91 | ///
92 | public override bool Remove(RectInt rect)
93 | {
94 | if(!Contains(rect))
95 | return false;
96 |
97 | if (used && position.Equals(rect))
98 | {
99 | used = false;
100 | return true;
101 | }
102 |
103 | if (rows != null)
104 | {
105 | foreach(var row in rows)
106 | {
107 | if(row.Remove(rect))
108 | return true;
109 | }
110 | }
111 |
112 | return false;
113 | }
114 |
115 | }
116 | }
117 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/Packer/Column.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cfe6bab14f21c4670ac726094aa4ed15
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/Packer/GreedyPacker.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace RuntimeTextureAtlas
4 | {
5 | ///
6 | /// 使用贪婪算法的二维打包器
7 | ///
8 | public class GreedyPacker : IBinaryPacker
9 | {
10 | ///
11 | /// 矩形空间
12 | ///
13 | private Rectangle root;
14 |
15 | ///
16 | /// 构造函数
17 | ///
18 | public GreedyPacker(int w, int h)
19 | {
20 | root = new Column(0, 0, w, h);
21 | }
22 |
23 | ///
24 | /// 插入矩形
25 | ///
26 | public RectInt Insert(int w, int h)
27 | {
28 | var rect = root.Insert(w, h);
29 | if(rect == null)
30 | return new RectInt(-1, -1, -1, -1);
31 |
32 | return rect.position;
33 | }
34 |
35 | ///
36 | /// 移除矩形
37 | ///
38 | public void Remove(RectInt pos)
39 | {
40 | root.Remove(pos);
41 | }
42 | }
43 | }
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/Packer/GreedyPacker.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d36d6fb739e604e15b5236f5e94944c7
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/Packer/IBinaryPacker.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace RuntimeTextureAtlas
4 | {
5 | ///
6 | /// 二维打包器接口
7 | ///
8 | public interface IBinaryPacker
9 | {
10 | ///
11 | /// 插入矩形
12 | ///
13 | RectInt Insert(int w, int h);
14 |
15 | ///
16 | /// 移除矩形
17 | ///
18 | void Remove(RectInt pos);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/Packer/IBinaryPacker.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bf7acee27ad2443adbfb60d9a36dc129
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/Packer/Rectangle.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace RuntimeTextureAtlas
6 | {
7 | ///
8 | /// 矩形
9 | ///
10 | public abstract class Rectangle
11 | {
12 | ///
13 | /// 矩形坐标
14 | ///
15 | public RectInt position;
16 |
17 | ///
18 | /// 是否已经被占用
19 | ///
20 | public bool used;
21 |
22 | ///
23 | /// 构造函数
24 | ///
25 | public Rectangle(int x, int y, int w, int h)
26 | {
27 | position = new RectInt(x, y, w, h);
28 | }
29 |
30 | ///
31 | /// 判断矩形是否包含
32 | ///
33 | public bool Contains(RectInt rect)
34 | {
35 | return (position.x <= rect.x && position.y <= rect.y && position.xMax >= rect.xMax && position.yMax >= rect.yMax);
36 | }
37 |
38 | ///
39 | /// 插入矩形
40 | ///
41 | public abstract Rectangle Insert(int w, int h);
42 |
43 | ///
44 | /// 移除矩形
45 | ///
46 | public abstract bool Remove(RectInt rect);
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/Packer/Rectangle.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5ec8e9edb411f4eda85f0436da5d9366
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/Packer/Row.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace RuntimeTextureAtlas
6 | {
7 | ///
8 | /// 高度固定的矩形(行)
9 | ///
10 | public class Row : Rectangle
11 | {
12 | private List columns;
13 |
14 | ///
15 | /// 剩余可分配宽度
16 | ///
17 | private int widthAvailable
18 | {
19 | get
20 | {
21 | if(used)
22 | return 0;
23 |
24 | if(columns == null)
25 | return position.width;
26 |
27 | int width = position.width;
28 | foreach(var column in columns)
29 | width -= column.position.width;
30 |
31 | return width;
32 | }
33 | }
34 |
35 | ///
36 | /// 构造函数
37 | ///
38 | public Row(int x, int y, int w, int h) : base(x, y, w, h)
39 | {
40 | }
41 |
42 | ///
43 | /// 插入矩形
44 | ///
45 | public override Rectangle Insert(int w, int h)
46 | {
47 | // 已被占用,无法分配
48 | if(used)
49 | return null;
50 |
51 | // 高度不足,无法分配
52 | if(h > position.height)
53 | return null;
54 |
55 | // 尺寸完全匹配,改为占用状态
56 | if(columns == null && w == position.width && h == position.height)
57 | {
58 | used = true;
59 | return this;
60 | }
61 |
62 | if(columns == null)
63 | columns = new List();
64 |
65 | // 尝试从已有子列中分配
66 | foreach(var column in columns)
67 | {
68 | var rect = column.Insert(w, h);
69 | if(rect != null)
70 | return rect;
71 | }
72 |
73 | // 宽度超过可用宽度,分配失败
74 | if(h > widthAvailable)
75 | return null;
76 |
77 | // 生成新列
78 | var newColumn = new Column(position.x + position.width - widthAvailable, position.y, w, position.height);
79 | columns.Add(newColumn);
80 |
81 | // 从新列中分配
82 | return newColumn.Insert(w, h);
83 | }
84 |
85 | ///
86 | /// 移除矩形
87 | ///
88 | public override bool Remove(RectInt rect)
89 | {
90 | if(!Contains(rect))
91 | return false;
92 |
93 | if(used && position.Equals(rect))
94 | {
95 | used = false;
96 | return true;
97 | }
98 |
99 | if(columns != null)
100 | {
101 | foreach(var column in columns)
102 | {
103 | if(column.Remove(rect))
104 | return true;
105 | }
106 | }
107 |
108 | return false;
109 | }
110 |
111 | }
112 | }
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/Packer/Row.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8c0ca5af8ea6a4c01af7d0669ac90d9d
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/TextureAtlas.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f19f2003bc5fc4cba990ddd6d7c046a2
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/TextureAtlas/SubTextureAgent.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Collections.Generic;
4 | using UnityEngine;
5 |
6 | namespace RuntimeTextureAtlas
7 | {
8 | ///
9 | /// 图集子贴图代理
10 | ///
11 | public abstract class SubTextureAgent : MonoBehaviour
12 | {
13 | ///
14 | /// 所属图集对象
15 | ///
16 | public TextureAtlas textureAtlas { get; private set; }
17 |
18 | ///
19 | /// 子贴图坐标数据
20 | ///
21 | public RectInt position { get; private set; }
22 |
23 | ///
24 | /// 获取子贴图期望尺寸
25 | ///
26 | protected abstract Vector2Int GetSize();
27 |
28 | ///
29 | /// 打包前的回调函数
30 | ///
31 | protected virtual void BeforePackTexture(Texture texture) { }
32 |
33 | ///
34 | /// 打包后的回调函数
35 | ///
36 | protected virtual void AfterPackTexture(Texture texture) { }
37 |
38 | ///
39 | /// 将贴图打包进图集.
40 | ///
41 | public void PackTexture(Texture texture, Action onSuccess = null)
42 | {
43 | // 当texture为空,则销毁子贴图代理
44 | if(texture == null)
45 | {
46 | Destroy(this);
47 | return;
48 | }
49 |
50 | BeforePackTexture(texture);
51 |
52 | // 取期望宽高与贴图实际宽高中的较小值作为最终宽高
53 | var size = GetSize();
54 | var width = Mathf.Min(size.x, texture.width);
55 | var height = Mathf.Min(size.y, texture.height);
56 |
57 | // 子贴图已存在,但与新贴图尺寸不一致,需要销毁旧贴图
58 | if(textureAtlas != null && (position.width != width || position.height != height))
59 | {
60 | OnDestroy();
61 | }
62 |
63 | if(textureAtlas != null)
64 | {
65 | // 更新子贴图内容
66 | textureAtlas.UpdateSubTexture(this, texture, () =>
67 | {
68 | AfterPackTexture(texture);
69 | onSuccess?.Invoke();
70 | });
71 | }
72 | else
73 | {
74 | // 生成新的子贴图
75 | TextureAtlasManager.instance.NewSubTexture(this, texture, width, height, (atlas, pos) =>
76 | {
77 | textureAtlas = atlas;
78 | position = pos;
79 |
80 | AfterPackTexture(texture);
81 | onSuccess?.Invoke();
82 | });
83 | }
84 | }
85 |
86 | private void OnDestroy()
87 | {
88 | textureAtlas?.ReleaseSubTexture(this);
89 | textureAtlas = null;
90 | }
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/TextureAtlas/SubTextureAgent.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3722b4fccfb4340dda13d76c50930d57
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/TextureAtlas/TextureAtlas.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using UnityEngine;
3 |
4 | namespace RuntimeTextureAtlas
5 | {
6 | ///
7 | /// 图集.
8 | ///
9 | public class TextureAtlas
10 | {
11 | ///
12 | /// 打包器
13 | ///
14 | private IBinaryPacker packer;
15 |
16 | ///
17 | /// 图集贴图.
18 | ///
19 | public RenderTexture texture { get; private set; }
20 |
21 | ///
22 | /// 构造函数
23 | ///
24 | public TextureAtlas(int size, RenderTextureFormat format)
25 | {
26 | // 贴图尺寸限制在2048内
27 | size = Mathf.Min(size, 2048);
28 |
29 | // 贴图格式校验
30 | if(!SystemInfo.SupportsRenderTextureFormat(format))
31 | format = RenderTextureFormat.Default;
32 |
33 | // 目前图集不支持mipmap,也不支持除Point外的采样模式
34 | texture = new RenderTexture(size, size, 0, format);
35 | texture.filterMode = FilterMode.Point;
36 | texture.useMipMap = false;
37 |
38 | // 贪婪打包器
39 | packer = new GreedyPacker(size, size);
40 | }
41 |
42 | ///
43 | /// 销毁贴图数据
44 | ///
45 | public void Destroy()
46 | {
47 | UnityEngine.Object.Destroy(texture);
48 | }
49 |
50 | ///
51 | /// 生成新的子贴图.
52 | ///
53 | public void NewSubTexture(SubTextureAgent agent, Texture subtexture, int width, int height, Action onSuccess)
54 | {
55 | if(agent == null || subtexture == null)
56 | {
57 | Debug.LogWarning("NewSubTexture参数错误!");
58 | return;
59 | }
60 |
61 | // 分配空间
62 | var rect = packer.Insert(width, height);
63 | if(rect.x < 0)
64 | return;
65 |
66 | // 将子贴图内容复制到图集贴图
67 | TextureUtil.DrawTexture(subtexture, texture, rect);
68 |
69 | // 回调
70 | onSuccess?.Invoke(this, rect);
71 | }
72 |
73 | ///
74 | /// 更新子贴图内容.
75 | ///
76 | public void UpdateSubTexture(SubTextureAgent agent, Texture subTexture, Action onSuccess)
77 | {
78 | if(agent == null || agent.textureAtlas != this)
79 | {
80 | Debug.LogWarning("UpdateSubTexture参数错误!");
81 | return;
82 | }
83 |
84 | TextureUtil.DrawTexture(subTexture, texture, agent.position);
85 | onSuccess?.Invoke();
86 | }
87 |
88 | ///
89 | /// 销毁子贴图
90 | ///
91 | public void ReleaseSubTexture(SubTextureAgent agent)
92 | {
93 | packer.Remove(agent.position);
94 | }
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/TextureAtlas/TextureAtlas.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a18df1d62f1bf46f4977a03a9a505ee6
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/TextureAtlas/TextureAtlasManager.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace RuntimeTextureAtlas
6 | {
7 | ///
8 | /// 图集管理器.
9 | /// 用于维护图集对象.
10 | ///
11 | public class TextureAtlasManager : MonoBehaviour
12 | {
13 | ///
14 | /// 默认图集贴图尺寸
15 | ///
16 | [SerializeField]
17 | private int atlasSize = 1024;
18 |
19 | ///
20 | /// 默认图集贴图格式
21 | ///
22 | [SerializeField]
23 | private RenderTextureFormat textureFormat = RenderTextureFormat.Default;
24 |
25 | // 图集对象,目前只支持一个,如需要可以改成多个
26 | private TextureAtlas _textureAtlas;
27 |
28 | ///
29 | /// 获取图集对象
30 | ///
31 | public TextureAtlas textureAtlas
32 | {
33 | get
34 | {
35 | if (_textureAtlas == null)
36 | {
37 | _textureAtlas = new TextureAtlas(atlasSize, textureFormat);
38 | }
39 |
40 | return _textureAtlas;
41 | }
42 | }
43 |
44 | ///
45 | /// 图集管理器单例对象
46 | ///
47 | private static TextureAtlasManager _instance;
48 |
49 | ///
50 | /// 获取图集管理器单例对象
51 | ///
52 | public static TextureAtlasManager instance
53 | {
54 | get
55 | {
56 | if (_instance == null)
57 | {
58 | _instance = FindObjectOfType();
59 | if(_instance == null)
60 | {
61 | var name = "TextureAtlasManager";
62 | var go = GameObject.Find(name);
63 | if (go == null)
64 | go = new GameObject(name);
65 |
66 | _instance = go.AddComponent();
67 | }
68 | }
69 | return _instance;
70 | }
71 | }
72 |
73 | private void Awake()
74 | {
75 | // 只允许有一个对象
76 | if(_instance != null && _instance != this)
77 | {
78 | Debug.LogWarning("TextureAtlasManager已存在,请勿重复创建!");
79 | Destroy(this);
80 | return;
81 | }
82 |
83 | _instance = this;
84 | }
85 |
86 | private void OnDestroy()
87 | {
88 | _textureAtlas?.Destroy();
89 | _textureAtlas = null;
90 |
91 | if(_instance == this)
92 | _instance = null;
93 | }
94 |
95 | ///
96 | /// 为图集生成新的子贴图.
97 | ///
98 | public void NewSubTexture(SubTextureAgent agent, Texture texture, int width, int height, Action onSuccess)
99 | {
100 | textureAtlas.NewSubTexture(agent, texture, width, height, onSuccess);
101 | }
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/TextureAtlas/TextureAtlasManager.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 15e305208b3cf4acdb46c476ebcd8a46
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/TextureAtlas/TextureUtil.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace RuntimeTextureAtlas
6 | {
7 | ///
8 | /// 贴图工具类
9 | ///
10 | public static class TextureUtil
11 | {
12 | // 贴图绘制材质
13 | private static Material uploadMateral;
14 |
15 | ///
16 | /// 将source贴图绘制到target贴图的指定区域position中
17 | ///
18 | public static void DrawTexture(Texture source, RenderTexture target, RectInt position)
19 | {
20 | if(source == null || target == null)
21 | return;
22 |
23 | // 初始化绘制材质
24 | if(uploadMateral == null)
25 | {
26 | var shader = Shader.Find("Hidden/RuntimeTextureAtlas/DrawTexture");
27 | if(shader == null)
28 | return;
29 | uploadMateral = new Material(shader);
30 | }
31 |
32 | // 构建变换矩阵
33 | float l = position.x * 2.0f / target.width - 1;
34 | float r = (position.x + position.width) * 2.0f / target.width - 1;
35 | float b = position.y * 2.0f / target.height - 1;
36 | float t = (position.y + position.height) * 2.0f / target.height - 1;
37 | var mat = new Matrix4x4();
38 | mat.m00 = r - l;
39 | mat.m03 = l;
40 | mat.m11 = t - b;
41 | mat.m13 = b;
42 | mat.m23 = -1;
43 | mat.m33 = 1;
44 |
45 | // 绘制贴图
46 | uploadMateral.SetMatrix(Shader.PropertyToID("_ImageMVP"), GL.GetGPUProjectionMatrix(mat, true));
47 | Graphics.Blit(source, target, uploadMateral);
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/TextureAtlas/TextureUtil.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6273933d982924212b8220cc49bcb435
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/UIExtention.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5ef081623c51443a9a4e56fca2ea5d3f
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/UIExtention/RawImageAgent.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using UnityEngine;
3 | using UnityEngine.UI;
4 |
5 | namespace RuntimeTextureAtlas
6 | {
7 | ///
8 | /// RawImage图集代理.
9 | ///
10 | public class RawImageAgent : SubTextureAgent
11 | {
12 | protected override Vector2Int GetSize()
13 | {
14 | var image = GetComponent();
15 | if(image == null)
16 | return Vector2Int.zero;
17 |
18 | RectTransform rt = image.rectTransform;
19 | var width = (int)(rt.sizeDelta.x * rt.localScale.x);
20 | var height = (int)(rt.sizeDelta.y * rt.localScale.y);
21 |
22 | return new Vector2Int(width, height);
23 | }
24 |
25 | protected override void BeforePackTexture(Texture texture)
26 | {
27 | var image = GetComponent();
28 | if(image == null)
29 | return;
30 |
31 | // 在图集打包完成之前,先使用原贴图.
32 | image.texture = texture;
33 | image.uvRect = new Rect(0, 0, 1, 1);
34 | }
35 |
36 | protected override void AfterPackTexture(Texture texture)
37 | {
38 | var image = GetComponent();
39 | if(image == null)
40 | return;
41 |
42 | // 改用图集贴图并设置对应子贴图uv
43 | image.texture = textureAtlas.texture;
44 | image.uvRect = new Rect((float)position.x / (float)textureAtlas.texture.width,
45 | (float)position.y / (float)textureAtlas.texture.height,
46 | (float)position.width / (float)textureAtlas.texture.width,
47 | (float)position.height / (float)textureAtlas.texture.height);
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/UIExtention/RawImageAgent.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a68221f8306d741198808a7a99513824
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/UIExtention/RawImageExtension.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using UnityEngine;
3 | using UnityEngine.UI;
4 |
5 | namespace RuntimeTextureAtlas
6 | {
7 | ///
8 | /// RawImage方法扩展.
9 | ///
10 | public static class RawImageExtension
11 | {
12 | ///
13 | /// 将贴图打包到图集,并应用到RawImage控件
14 | ///
15 | public static void PackTexture(this RawImage image, Texture texture, Action onSuccess = null)
16 | {
17 | // 由RawImageAgent完成实际功能
18 | var agent = image.GetComponent() ?? image.gameObject.AddComponent();
19 | agent.PackTexture(texture, onSuccess);
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/Script/UIExtention/RawImageExtension.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c71c019a021024fd5818a52391755d19
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/TextureAtlasManager.prefab:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1 &1863515564360413319
4 | GameObject:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | serializedVersion: 6
10 | m_Component:
11 | - component: {fileID: 4644032042117537212}
12 | - component: {fileID: 9124245032816102111}
13 | m_Layer: 0
14 | m_Name: TextureAtlasManager
15 | m_TagString: Untagged
16 | m_Icon: {fileID: 0}
17 | m_NavMeshLayer: 0
18 | m_StaticEditorFlags: 0
19 | m_IsActive: 1
20 | --- !u!4 &4644032042117537212
21 | Transform:
22 | m_ObjectHideFlags: 0
23 | m_CorrespondingSourceObject: {fileID: 0}
24 | m_PrefabInstance: {fileID: 0}
25 | m_PrefabAsset: {fileID: 0}
26 | m_GameObject: {fileID: 1863515564360413319}
27 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
28 | m_LocalPosition: {x: 0, y: 0, z: 0}
29 | m_LocalScale: {x: 1, y: 1, z: 1}
30 | m_Children: []
31 | m_Father: {fileID: 0}
32 | m_RootOrder: 0
33 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
34 | --- !u!114 &9124245032816102111
35 | MonoBehaviour:
36 | m_ObjectHideFlags: 0
37 | m_CorrespondingSourceObject: {fileID: 0}
38 | m_PrefabInstance: {fileID: 0}
39 | m_PrefabAsset: {fileID: 0}
40 | m_GameObject: {fileID: 1863515564360413319}
41 | m_Enabled: 1
42 | m_EditorHideFlags: 0
43 | m_Script: {fileID: 11500000, guid: 15e305208b3cf4acdb46c476ebcd8a46, type: 3}
44 | m_Name:
45 | m_EditorClassIdentifier:
46 | defaultTextureSize: 1024
47 | layouts: []
48 | atlasList: []
49 |
--------------------------------------------------------------------------------
/Assets/RuntimeTextureAtlas/TextureAtlasManager.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2fe0778f918d1415aa8cd819ef47042c
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Image/drawcall-with.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Image/drawcall-with.png
--------------------------------------------------------------------------------
/Image/drawcall-without.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Image/drawcall-without.png
--------------------------------------------------------------------------------
/Image/rendertexture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Image/rendertexture.png
--------------------------------------------------------------------------------
/Image/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jintiao/RuntimeTextureAtlas/1d9526b2022b7b02c74f4834d75b9d8a55b42269/Image/screenshot.png
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/Packages/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.ads": "2.0.8",
4 | "com.unity.analytics": "3.2.2",
5 | "com.unity.collab-proxy": "1.2.15",
6 | "com.unity.package-manager-ui": "2.0.7",
7 | "com.unity.purchasing": "2.0.3",
8 | "com.unity.textmeshpro": "1.3.0",
9 | "com.unity.modules.ai": "1.0.0",
10 | "com.unity.modules.animation": "1.0.0",
11 | "com.unity.modules.assetbundle": "1.0.0",
12 | "com.unity.modules.audio": "1.0.0",
13 | "com.unity.modules.cloth": "1.0.0",
14 | "com.unity.modules.director": "1.0.0",
15 | "com.unity.modules.imageconversion": "1.0.0",
16 | "com.unity.modules.imgui": "1.0.0",
17 | "com.unity.modules.jsonserialize": "1.0.0",
18 | "com.unity.modules.particlesystem": "1.0.0",
19 | "com.unity.modules.physics": "1.0.0",
20 | "com.unity.modules.physics2d": "1.0.0",
21 | "com.unity.modules.screencapture": "1.0.0",
22 | "com.unity.modules.terrain": "1.0.0",
23 | "com.unity.modules.terrainphysics": "1.0.0",
24 | "com.unity.modules.tilemap": "1.0.0",
25 | "com.unity.modules.ui": "1.0.0",
26 | "com.unity.modules.uielements": "1.0.0",
27 | "com.unity.modules.umbra": "1.0.0",
28 | "com.unity.modules.unityanalytics": "1.0.0",
29 | "com.unity.modules.unitywebrequest": "1.0.0",
30 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
31 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
32 | "com.unity.modules.unitywebrequesttexture": "1.0.0",
33 | "com.unity.modules.unitywebrequestwww": "1.0.0",
34 | "com.unity.modules.vehicles": "1.0.0",
35 | "com.unity.modules.video": "1.0.0",
36 | "com.unity.modules.vr": "1.0.0",
37 | "com.unity.modules.wind": "1.0.0",
38 | "com.unity.modules.xr": "1.0.0"
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/ProjectSettings/AudioManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!11 &1
4 | AudioManager:
5 | m_ObjectHideFlags: 0
6 | m_Volume: 1
7 | Rolloff Scale: 1
8 | Doppler Factor: 1
9 | Default Speaker Mode: 2
10 | m_SampleRate: 0
11 | m_DSPBufferSize: 1024
12 | m_VirtualVoiceCount: 512
13 | m_RealVoiceCount: 32
14 | m_SpatializerPlugin:
15 | m_AmbisonicDecoderPlugin:
16 | m_DisableAudio: 0
17 | m_VirtualizeEffects: 1
18 |
--------------------------------------------------------------------------------
/ProjectSettings/ClusterInputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!236 &1
4 | ClusterInputManager:
5 | m_ObjectHideFlags: 0
6 | m_Inputs: []
7 |
--------------------------------------------------------------------------------
/ProjectSettings/DynamicsManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!55 &1
4 | PhysicsManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 8
7 | m_Gravity: {x: 0, y: -9.81, z: 0}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_BounceThreshold: 2
10 | m_SleepThreshold: 0.005
11 | m_DefaultContactOffset: 0.01
12 | m_DefaultSolverIterations: 6
13 | m_DefaultSolverVelocityIterations: 1
14 | m_QueriesHitBackfaces: 0
15 | m_QueriesHitTriggers: 1
16 | m_EnableAdaptiveForce: 0
17 | m_ClothInterCollisionDistance: 0
18 | m_ClothInterCollisionStiffness: 0
19 | m_ContactsGeneration: 1
20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
21 | m_AutoSimulation: 1
22 | m_AutoSyncTransforms: 0
23 | m_ReuseCollisionCallbacks: 1
24 | m_ClothInterCollisionSettingsToggle: 0
25 | m_ContactPairsMode: 0
26 | m_BroadphaseType: 0
27 | m_WorldBounds:
28 | m_Center: {x: 0, y: 0, z: 0}
29 | m_Extent: {x: 250, y: 250, z: 250}
30 | m_WorldSubdivisions: 8
31 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorBuildSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1045 &1
4 | EditorBuildSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Scenes: []
8 | m_configObjects: {}
9 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!159 &1
4 | EditorSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 7
7 | m_ExternalVersionControlSupport: Visible Meta Files
8 | m_SerializationMode: 2
9 | m_LineEndingsForNewScripts: 2
10 | m_DefaultBehaviorMode: 0
11 | m_SpritePackerMode: 0
12 | m_SpritePackerPaddingPower: 1
13 | m_EtcTextureCompressorBehavior: 1
14 | m_EtcTextureFastCompressor: 1
15 | m_EtcTextureNormalCompressor: 2
16 | m_EtcTextureBestCompressor: 4
17 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd
18 | m_ProjectGenerationRootNamespace:
19 | m_UserGeneratedProjectSuffix:
20 | m_CollabEditorSettings:
21 | inProgressEnabled: 1
22 |
--------------------------------------------------------------------------------
/ProjectSettings/GraphicsSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!30 &1
4 | GraphicsSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 12
7 | m_Deferred:
8 | m_Mode: 1
9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
10 | m_DeferredReflections:
11 | m_Mode: 1
12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
13 | m_ScreenSpaceShadows:
14 | m_Mode: 1
15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
16 | m_LegacyDeferred:
17 | m_Mode: 1
18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
19 | m_DepthNormals:
20 | m_Mode: 1
21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
22 | m_MotionVectors:
23 | m_Mode: 1
24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
25 | m_LightHalo:
26 | m_Mode: 1
27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
28 | m_LensFlare:
29 | m_Mode: 1
30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
31 | m_AlwaysIncludedShaders:
32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
38 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
39 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}
40 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0}
41 | m_PreloadedShaders: []
42 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
43 | type: 0}
44 | m_CustomRenderPipeline: {fileID: 0}
45 | m_TransparencySortMode: 0
46 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
47 | m_DefaultRenderingPath: 1
48 | m_DefaultMobileRenderingPath: 1
49 | m_TierSettings: []
50 | m_LightmapStripping: 0
51 | m_FogStripping: 0
52 | m_InstancingStripping: 0
53 | m_LightmapKeepPlain: 1
54 | m_LightmapKeepDirCombined: 1
55 | m_LightmapKeepDynamicPlain: 1
56 | m_LightmapKeepDynamicDirCombined: 1
57 | m_LightmapKeepShadowMask: 1
58 | m_LightmapKeepSubtractive: 1
59 | m_FogKeepLinear: 1
60 | m_FogKeepExp: 1
61 | m_FogKeepExp2: 1
62 | m_AlbedoSwatchInfos: []
63 | m_LightsUseLinearIntensity: 0
64 | m_LightsUseColorTemperature: 0
65 |
--------------------------------------------------------------------------------
/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!13 &1
4 | InputManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Axes:
8 | - serializedVersion: 3
9 | m_Name: Horizontal
10 | descriptiveName:
11 | descriptiveNegativeName:
12 | negativeButton: left
13 | positiveButton: right
14 | altNegativeButton: a
15 | altPositiveButton: d
16 | gravity: 3
17 | dead: 0.001
18 | sensitivity: 3
19 | snap: 1
20 | invert: 0
21 | type: 0
22 | axis: 0
23 | joyNum: 0
24 | - serializedVersion: 3
25 | m_Name: Vertical
26 | descriptiveName:
27 | descriptiveNegativeName:
28 | negativeButton: down
29 | positiveButton: up
30 | altNegativeButton: s
31 | altPositiveButton: w
32 | gravity: 3
33 | dead: 0.001
34 | sensitivity: 3
35 | snap: 1
36 | invert: 0
37 | type: 0
38 | axis: 0
39 | joyNum: 0
40 | - serializedVersion: 3
41 | m_Name: Fire1
42 | descriptiveName:
43 | descriptiveNegativeName:
44 | negativeButton:
45 | positiveButton: left ctrl
46 | altNegativeButton:
47 | altPositiveButton: mouse 0
48 | gravity: 1000
49 | dead: 0.001
50 | sensitivity: 1000
51 | snap: 0
52 | invert: 0
53 | type: 0
54 | axis: 0
55 | joyNum: 0
56 | - serializedVersion: 3
57 | m_Name: Fire2
58 | descriptiveName:
59 | descriptiveNegativeName:
60 | negativeButton:
61 | positiveButton: left alt
62 | altNegativeButton:
63 | altPositiveButton: mouse 1
64 | gravity: 1000
65 | dead: 0.001
66 | sensitivity: 1000
67 | snap: 0
68 | invert: 0
69 | type: 0
70 | axis: 0
71 | joyNum: 0
72 | - serializedVersion: 3
73 | m_Name: Fire3
74 | descriptiveName:
75 | descriptiveNegativeName:
76 | negativeButton:
77 | positiveButton: left shift
78 | altNegativeButton:
79 | altPositiveButton: mouse 2
80 | gravity: 1000
81 | dead: 0.001
82 | sensitivity: 1000
83 | snap: 0
84 | invert: 0
85 | type: 0
86 | axis: 0
87 | joyNum: 0
88 | - serializedVersion: 3
89 | m_Name: Jump
90 | descriptiveName:
91 | descriptiveNegativeName:
92 | negativeButton:
93 | positiveButton: space
94 | altNegativeButton:
95 | altPositiveButton:
96 | gravity: 1000
97 | dead: 0.001
98 | sensitivity: 1000
99 | snap: 0
100 | invert: 0
101 | type: 0
102 | axis: 0
103 | joyNum: 0
104 | - serializedVersion: 3
105 | m_Name: Mouse X
106 | descriptiveName:
107 | descriptiveNegativeName:
108 | negativeButton:
109 | positiveButton:
110 | altNegativeButton:
111 | altPositiveButton:
112 | gravity: 0
113 | dead: 0
114 | sensitivity: 0.1
115 | snap: 0
116 | invert: 0
117 | type: 1
118 | axis: 0
119 | joyNum: 0
120 | - serializedVersion: 3
121 | m_Name: Mouse Y
122 | descriptiveName:
123 | descriptiveNegativeName:
124 | negativeButton:
125 | positiveButton:
126 | altNegativeButton:
127 | altPositiveButton:
128 | gravity: 0
129 | dead: 0
130 | sensitivity: 0.1
131 | snap: 0
132 | invert: 0
133 | type: 1
134 | axis: 1
135 | joyNum: 0
136 | - serializedVersion: 3
137 | m_Name: Mouse ScrollWheel
138 | descriptiveName:
139 | descriptiveNegativeName:
140 | negativeButton:
141 | positiveButton:
142 | altNegativeButton:
143 | altPositiveButton:
144 | gravity: 0
145 | dead: 0
146 | sensitivity: 0.1
147 | snap: 0
148 | invert: 0
149 | type: 1
150 | axis: 2
151 | joyNum: 0
152 | - serializedVersion: 3
153 | m_Name: Horizontal
154 | descriptiveName:
155 | descriptiveNegativeName:
156 | negativeButton:
157 | positiveButton:
158 | altNegativeButton:
159 | altPositiveButton:
160 | gravity: 0
161 | dead: 0.19
162 | sensitivity: 1
163 | snap: 0
164 | invert: 0
165 | type: 2
166 | axis: 0
167 | joyNum: 0
168 | - serializedVersion: 3
169 | m_Name: Vertical
170 | descriptiveName:
171 | descriptiveNegativeName:
172 | negativeButton:
173 | positiveButton:
174 | altNegativeButton:
175 | altPositiveButton:
176 | gravity: 0
177 | dead: 0.19
178 | sensitivity: 1
179 | snap: 0
180 | invert: 1
181 | type: 2
182 | axis: 1
183 | joyNum: 0
184 | - serializedVersion: 3
185 | m_Name: Fire1
186 | descriptiveName:
187 | descriptiveNegativeName:
188 | negativeButton:
189 | positiveButton: joystick button 0
190 | altNegativeButton:
191 | altPositiveButton:
192 | gravity: 1000
193 | dead: 0.001
194 | sensitivity: 1000
195 | snap: 0
196 | invert: 0
197 | type: 0
198 | axis: 0
199 | joyNum: 0
200 | - serializedVersion: 3
201 | m_Name: Fire2
202 | descriptiveName:
203 | descriptiveNegativeName:
204 | negativeButton:
205 | positiveButton: joystick button 1
206 | altNegativeButton:
207 | altPositiveButton:
208 | gravity: 1000
209 | dead: 0.001
210 | sensitivity: 1000
211 | snap: 0
212 | invert: 0
213 | type: 0
214 | axis: 0
215 | joyNum: 0
216 | - serializedVersion: 3
217 | m_Name: Fire3
218 | descriptiveName:
219 | descriptiveNegativeName:
220 | negativeButton:
221 | positiveButton: joystick button 2
222 | altNegativeButton:
223 | altPositiveButton:
224 | gravity: 1000
225 | dead: 0.001
226 | sensitivity: 1000
227 | snap: 0
228 | invert: 0
229 | type: 0
230 | axis: 0
231 | joyNum: 0
232 | - serializedVersion: 3
233 | m_Name: Jump
234 | descriptiveName:
235 | descriptiveNegativeName:
236 | negativeButton:
237 | positiveButton: joystick button 3
238 | altNegativeButton:
239 | altPositiveButton:
240 | gravity: 1000
241 | dead: 0.001
242 | sensitivity: 1000
243 | snap: 0
244 | invert: 0
245 | type: 0
246 | axis: 0
247 | joyNum: 0
248 | - serializedVersion: 3
249 | m_Name: Submit
250 | descriptiveName:
251 | descriptiveNegativeName:
252 | negativeButton:
253 | positiveButton: return
254 | altNegativeButton:
255 | altPositiveButton: joystick button 0
256 | gravity: 1000
257 | dead: 0.001
258 | sensitivity: 1000
259 | snap: 0
260 | invert: 0
261 | type: 0
262 | axis: 0
263 | joyNum: 0
264 | - serializedVersion: 3
265 | m_Name: Submit
266 | descriptiveName:
267 | descriptiveNegativeName:
268 | negativeButton:
269 | positiveButton: enter
270 | altNegativeButton:
271 | altPositiveButton: space
272 | gravity: 1000
273 | dead: 0.001
274 | sensitivity: 1000
275 | snap: 0
276 | invert: 0
277 | type: 0
278 | axis: 0
279 | joyNum: 0
280 | - serializedVersion: 3
281 | m_Name: Cancel
282 | descriptiveName:
283 | descriptiveNegativeName:
284 | negativeButton:
285 | positiveButton: escape
286 | altNegativeButton:
287 | altPositiveButton: joystick button 1
288 | gravity: 1000
289 | dead: 0.001
290 | sensitivity: 1000
291 | snap: 0
292 | invert: 0
293 | type: 0
294 | axis: 0
295 | joyNum: 0
296 |
--------------------------------------------------------------------------------
/ProjectSettings/NavMeshAreas.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!126 &1
4 | NavMeshProjectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | areas:
8 | - name: Walkable
9 | cost: 1
10 | - name: Not Walkable
11 | cost: 1
12 | - name: Jump
13 | cost: 2
14 | - name:
15 | cost: 1
16 | - name:
17 | cost: 1
18 | - name:
19 | cost: 1
20 | - name:
21 | cost: 1
22 | - name:
23 | cost: 1
24 | - name:
25 | cost: 1
26 | - name:
27 | cost: 1
28 | - name:
29 | cost: 1
30 | - name:
31 | cost: 1
32 | - name:
33 | cost: 1
34 | - name:
35 | cost: 1
36 | - name:
37 | cost: 1
38 | - name:
39 | cost: 1
40 | - name:
41 | cost: 1
42 | - name:
43 | cost: 1
44 | - name:
45 | cost: 1
46 | - name:
47 | cost: 1
48 | - name:
49 | cost: 1
50 | - name:
51 | cost: 1
52 | - name:
53 | cost: 1
54 | - name:
55 | cost: 1
56 | - name:
57 | cost: 1
58 | - name:
59 | cost: 1
60 | - name:
61 | cost: 1
62 | - name:
63 | cost: 1
64 | - name:
65 | cost: 1
66 | - name:
67 | cost: 1
68 | - name:
69 | cost: 1
70 | - name:
71 | cost: 1
72 | m_LastAgentTypeID: -887442657
73 | m_Settings:
74 | - serializedVersion: 2
75 | agentTypeID: 0
76 | agentRadius: 0.5
77 | agentHeight: 2
78 | agentSlope: 45
79 | agentClimb: 0.75
80 | ledgeDropHeight: 0
81 | maxJumpAcrossDistance: 0
82 | minRegionArea: 2
83 | manualCellSize: 0
84 | cellSize: 0.16666667
85 | manualTileSize: 0
86 | tileSize: 256
87 | accuratePlacement: 0
88 | debug:
89 | m_Flags: 0
90 | m_SettingNames:
91 | - Humanoid
92 |
--------------------------------------------------------------------------------
/ProjectSettings/NetworkManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!149 &1
4 | NetworkManager:
5 | m_ObjectHideFlags: 0
6 | m_DebugLevel: 0
7 | m_Sendrate: 15
8 | m_AssetToPrefab: {}
9 |
--------------------------------------------------------------------------------
/ProjectSettings/Physics2DSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!19 &1
4 | Physics2DSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 4
7 | m_Gravity: {x: 0, y: -9.81}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_VelocityIterations: 8
10 | m_PositionIterations: 3
11 | m_VelocityThreshold: 1
12 | m_MaxLinearCorrection: 0.2
13 | m_MaxAngularCorrection: 8
14 | m_MaxTranslationSpeed: 100
15 | m_MaxRotationSpeed: 360
16 | m_BaumgarteScale: 0.2
17 | m_BaumgarteTimeOfImpactScale: 0.75
18 | m_TimeToSleep: 0.5
19 | m_LinearSleepTolerance: 0.01
20 | m_AngularSleepTolerance: 2
21 | m_DefaultContactOffset: 0.01
22 | m_AutoSimulation: 1
23 | m_QueriesHitTriggers: 1
24 | m_QueriesStartInColliders: 1
25 | m_ChangeStopsCallbacks: 0
26 | m_CallbacksOnDisable: 1
27 | m_ReuseCollisionCallbacks: 1
28 | m_AutoSyncTransforms: 0
29 | m_AlwaysShowColliders: 0
30 | m_ShowColliderSleep: 1
31 | m_ShowColliderContacts: 0
32 | m_ShowColliderAABB: 0
33 | m_ContactArrowScale: 0.2
34 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
35 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
36 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
37 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
38 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
39 |
--------------------------------------------------------------------------------
/ProjectSettings/PresetManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1386491679 &1
4 | PresetManager:
5 | m_ObjectHideFlags: 0
6 | m_DefaultList:
7 | - type:
8 | m_NativeTypeID: 108
9 | m_ManagedTypePPtr: {fileID: 0}
10 | m_ManagedTypeFallback:
11 | defaultPresets:
12 | - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea,
13 | type: 2}
14 | - type:
15 | m_NativeTypeID: 1020
16 | m_ManagedTypePPtr: {fileID: 0}
17 | m_ManagedTypeFallback:
18 | defaultPresets:
19 | - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6,
20 | type: 2}
21 | - type:
22 | m_NativeTypeID: 1006
23 | m_ManagedTypePPtr: {fileID: 0}
24 | m_ManagedTypeFallback:
25 | defaultPresets:
26 | - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9,
27 | type: 2}
28 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!129 &1
4 | PlayerSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 15
7 | productGUID: 600003eecc46c4443961d4b1ca56b09a
8 | AndroidProfiler: 0
9 | AndroidFilterTouchesWhenObscured: 0
10 | AndroidEnableSustainedPerformanceMode: 0
11 | defaultScreenOrientation: 4
12 | targetDevice: 2
13 | useOnDemandResources: 0
14 | accelerometerFrequency: 60
15 | companyName: DefaultCompany
16 | productName: RuntimeSpriteAtlas
17 | defaultCursor: {fileID: 0}
18 | cursorHotspot: {x: 0, y: 0}
19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
20 | m_ShowUnitySplashScreen: 1
21 | m_ShowUnitySplashLogo: 1
22 | m_SplashScreenOverlayOpacity: 1
23 | m_SplashScreenAnimation: 1
24 | m_SplashScreenLogoStyle: 1
25 | m_SplashScreenDrawMode: 0
26 | m_SplashScreenBackgroundAnimationZoom: 1
27 | m_SplashScreenLogoAnimationZoom: 1
28 | m_SplashScreenBackgroundLandscapeAspect: 1
29 | m_SplashScreenBackgroundPortraitAspect: 1
30 | m_SplashScreenBackgroundLandscapeUvs:
31 | serializedVersion: 2
32 | x: 0
33 | y: 0
34 | width: 1
35 | height: 1
36 | m_SplashScreenBackgroundPortraitUvs:
37 | serializedVersion: 2
38 | x: 0
39 | y: 0
40 | width: 1
41 | height: 1
42 | m_SplashScreenLogos: []
43 | m_VirtualRealitySplashScreen: {fileID: 0}
44 | m_HolographicTrackingLossScreen: {fileID: 0}
45 | defaultScreenWidth: 1024
46 | defaultScreenHeight: 768
47 | defaultScreenWidthWeb: 960
48 | defaultScreenHeightWeb: 600
49 | m_StereoRenderingPath: 0
50 | m_ActiveColorSpace: 0
51 | m_MTRendering: 1
52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000
53 | iosShowActivityIndicatorOnLoading: -1
54 | androidShowActivityIndicatorOnLoading: -1
55 | iosAppInBackgroundBehavior: 0
56 | displayResolutionDialog: 1
57 | iosAllowHTTPDownload: 1
58 | allowedAutorotateToPortrait: 1
59 | allowedAutorotateToPortraitUpsideDown: 1
60 | allowedAutorotateToLandscapeRight: 1
61 | allowedAutorotateToLandscapeLeft: 1
62 | useOSAutorotation: 1
63 | use32BitDisplayBuffer: 1
64 | preserveFramebufferAlpha: 0
65 | disableDepthAndStencilBuffers: 0
66 | androidStartInFullscreen: 1
67 | androidRenderOutsideSafeArea: 0
68 | androidBlitType: 0
69 | defaultIsNativeResolution: 1
70 | macRetinaSupport: 1
71 | runInBackground: 1
72 | captureSingleScreen: 0
73 | muteOtherAudioSources: 0
74 | Prepare IOS For Recording: 0
75 | Force IOS Speakers When Recording: 0
76 | deferSystemGesturesMode: 0
77 | hideHomeButton: 0
78 | submitAnalytics: 1
79 | usePlayerLog: 1
80 | bakeCollisionMeshes: 0
81 | forceSingleInstance: 0
82 | resizableWindow: 0
83 | useMacAppStoreValidation: 0
84 | macAppStoreCategory: public.app-category.games
85 | gpuSkinning: 1
86 | graphicsJobs: 0
87 | xboxPIXTextureCapture: 0
88 | xboxEnableAvatar: 0
89 | xboxEnableKinect: 0
90 | xboxEnableKinectAutoTracking: 0
91 | xboxEnableFitness: 0
92 | visibleInBackground: 1
93 | allowFullscreenSwitch: 1
94 | graphicsJobMode: 0
95 | fullscreenMode: 1
96 | xboxSpeechDB: 0
97 | xboxEnableHeadOrientation: 0
98 | xboxEnableGuest: 0
99 | xboxEnablePIXSampling: 0
100 | metalFramebufferOnly: 0
101 | xboxOneResolution: 0
102 | xboxOneSResolution: 0
103 | xboxOneXResolution: 3
104 | xboxOneMonoLoggingLevel: 0
105 | xboxOneLoggingLevel: 1
106 | xboxOneDisableEsram: 0
107 | xboxOnePresentImmediateThreshold: 0
108 | switchQueueCommandMemory: 0
109 | switchQueueControlMemory: 16384
110 | switchQueueComputeMemory: 262144
111 | switchNVNShaderPoolsGranularity: 33554432
112 | switchNVNDefaultPoolsGranularity: 16777216
113 | switchNVNOtherPoolsGranularity: 16777216
114 | vulkanEnableSetSRGBWrite: 0
115 | m_SupportedAspectRatios:
116 | 4:3: 1
117 | 5:4: 1
118 | 16:10: 1
119 | 16:9: 1
120 | Others: 1
121 | bundleVersion: 0.1
122 | preloadedAssets: []
123 | metroInputSource: 0
124 | wsaTransparentSwapchain: 0
125 | m_HolographicPauseOnTrackingLoss: 1
126 | xboxOneDisableKinectGpuReservation: 1
127 | xboxOneEnable7thCore: 1
128 | isWsaHolographicRemotingEnabled: 0
129 | vrSettings:
130 | cardboard:
131 | depthFormat: 0
132 | enableTransitionView: 0
133 | daydream:
134 | depthFormat: 0
135 | useSustainedPerformanceMode: 0
136 | enableVideoLayer: 0
137 | useProtectedVideoMemory: 0
138 | minimumSupportedHeadTracking: 0
139 | maximumSupportedHeadTracking: 1
140 | hololens:
141 | depthFormat: 1
142 | depthBufferSharingEnabled: 1
143 | oculus:
144 | sharedDepthBuffer: 1
145 | dashSupport: 1
146 | enable360StereoCapture: 0
147 | protectGraphicsMemory: 0
148 | enableFrameTimingStats: 0
149 | useHDRDisplay: 0
150 | m_ColorGamuts: 00000000
151 | targetPixelDensity: 30
152 | resolutionScalingMode: 0
153 | androidSupportedAspectRatio: 1
154 | androidMaxAspectRatio: 2.1
155 | applicationIdentifier: {}
156 | buildNumber: {}
157 | AndroidBundleVersionCode: 1
158 | AndroidMinSdkVersion: 16
159 | AndroidTargetSdkVersion: 0
160 | AndroidPreferredInstallLocation: 1
161 | aotOptions:
162 | stripEngineCode: 1
163 | iPhoneStrippingLevel: 0
164 | iPhoneScriptCallOptimization: 0
165 | ForceInternetPermission: 0
166 | ForceSDCardPermission: 0
167 | CreateWallpaper: 0
168 | APKExpansionFiles: 0
169 | keepLoadedShadersAlive: 0
170 | StripUnusedMeshComponents: 1
171 | VertexChannelCompressionMask: 4054
172 | iPhoneSdkVersion: 988
173 | iOSTargetOSVersionString: 9.0
174 | tvOSSdkVersion: 0
175 | tvOSRequireExtendedGameController: 0
176 | tvOSTargetOSVersionString: 9.0
177 | uIPrerenderedIcon: 0
178 | uIRequiresPersistentWiFi: 0
179 | uIRequiresFullScreen: 1
180 | uIStatusBarHidden: 1
181 | uIExitOnSuspend: 0
182 | uIStatusBarStyle: 0
183 | iPhoneSplashScreen: {fileID: 0}
184 | iPhoneHighResSplashScreen: {fileID: 0}
185 | iPhoneTallHighResSplashScreen: {fileID: 0}
186 | iPhone47inSplashScreen: {fileID: 0}
187 | iPhone55inPortraitSplashScreen: {fileID: 0}
188 | iPhone55inLandscapeSplashScreen: {fileID: 0}
189 | iPhone58inPortraitSplashScreen: {fileID: 0}
190 | iPhone58inLandscapeSplashScreen: {fileID: 0}
191 | iPadPortraitSplashScreen: {fileID: 0}
192 | iPadHighResPortraitSplashScreen: {fileID: 0}
193 | iPadLandscapeSplashScreen: {fileID: 0}
194 | iPadHighResLandscapeSplashScreen: {fileID: 0}
195 | appleTVSplashScreen: {fileID: 0}
196 | appleTVSplashScreen2x: {fileID: 0}
197 | tvOSSmallIconLayers: []
198 | tvOSSmallIconLayers2x: []
199 | tvOSLargeIconLayers: []
200 | tvOSLargeIconLayers2x: []
201 | tvOSTopShelfImageLayers: []
202 | tvOSTopShelfImageLayers2x: []
203 | tvOSTopShelfImageWideLayers: []
204 | tvOSTopShelfImageWideLayers2x: []
205 | iOSLaunchScreenType: 0
206 | iOSLaunchScreenPortrait: {fileID: 0}
207 | iOSLaunchScreenLandscape: {fileID: 0}
208 | iOSLaunchScreenBackgroundColor:
209 | serializedVersion: 2
210 | rgba: 0
211 | iOSLaunchScreenFillPct: 100
212 | iOSLaunchScreenSize: 100
213 | iOSLaunchScreenCustomXibPath:
214 | iOSLaunchScreeniPadType: 0
215 | iOSLaunchScreeniPadImage: {fileID: 0}
216 | iOSLaunchScreeniPadBackgroundColor:
217 | serializedVersion: 2
218 | rgba: 0
219 | iOSLaunchScreeniPadFillPct: 100
220 | iOSLaunchScreeniPadSize: 100
221 | iOSLaunchScreeniPadCustomXibPath:
222 | iOSUseLaunchScreenStoryboard: 0
223 | iOSLaunchScreenCustomStoryboardPath:
224 | iOSDeviceRequirements: []
225 | iOSURLSchemes: []
226 | iOSBackgroundModes: 0
227 | iOSMetalForceHardShadows: 0
228 | metalEditorSupport: 1
229 | metalAPIValidation: 1
230 | iOSRenderExtraFrameOnPause: 0
231 | appleDeveloperTeamID:
232 | iOSManualSigningProvisioningProfileID:
233 | tvOSManualSigningProvisioningProfileID:
234 | iOSManualSigningProvisioningProfileType: 0
235 | tvOSManualSigningProvisioningProfileType: 0
236 | appleEnableAutomaticSigning: 0
237 | iOSRequireARKit: 0
238 | iOSAutomaticallyDetectAndAddCapabilities: 1
239 | appleEnableProMotion: 0
240 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
241 | templatePackageId: com.unity.template.3d@1.3.0
242 | templateDefaultScene: Assets/Scenes/SampleScene.unity
243 | AndroidTargetArchitectures: 5
244 | AndroidSplashScreenScale: 0
245 | androidSplashScreen: {fileID: 0}
246 | AndroidKeystoreName:
247 | AndroidKeyaliasName:
248 | AndroidBuildApkPerCpuArchitecture: 0
249 | AndroidTVCompatibility: 1
250 | AndroidIsGame: 1
251 | AndroidEnableTango: 0
252 | androidEnableBanner: 1
253 | androidUseLowAccuracyLocation: 0
254 | m_AndroidBanners:
255 | - width: 320
256 | height: 180
257 | banner: {fileID: 0}
258 | androidGamepadSupportLevel: 0
259 | resolutionDialogBanner: {fileID: 0}
260 | m_BuildTargetIcons: []
261 | m_BuildTargetPlatformIcons: []
262 | m_BuildTargetBatching:
263 | - m_BuildTarget: Standalone
264 | m_StaticBatching: 1
265 | m_DynamicBatching: 0
266 | - m_BuildTarget: tvOS
267 | m_StaticBatching: 1
268 | m_DynamicBatching: 0
269 | - m_BuildTarget: Android
270 | m_StaticBatching: 1
271 | m_DynamicBatching: 0
272 | - m_BuildTarget: iPhone
273 | m_StaticBatching: 1
274 | m_DynamicBatching: 0
275 | - m_BuildTarget: WebGL
276 | m_StaticBatching: 0
277 | m_DynamicBatching: 0
278 | m_BuildTargetGraphicsAPIs:
279 | - m_BuildTarget: AndroidPlayer
280 | m_APIs: 0b00000008000000
281 | m_Automatic: 1
282 | - m_BuildTarget: iOSSupport
283 | m_APIs: 10000000
284 | m_Automatic: 1
285 | - m_BuildTarget: AppleTVSupport
286 | m_APIs: 10000000
287 | m_Automatic: 0
288 | - m_BuildTarget: WebGLSupport
289 | m_APIs: 0b000000
290 | m_Automatic: 1
291 | m_BuildTargetVRSettings:
292 | - m_BuildTarget: Standalone
293 | m_Enabled: 0
294 | m_Devices:
295 | - Oculus
296 | - OpenVR
297 | m_BuildTargetEnableVuforiaSettings: []
298 | openGLRequireES31: 0
299 | openGLRequireES31AEP: 0
300 | m_TemplateCustomTags: {}
301 | mobileMTRendering:
302 | Android: 1
303 | iPhone: 1
304 | tvOS: 1
305 | m_BuildTargetGroupLightmapEncodingQuality: []
306 | m_BuildTargetGroupLightmapSettings: []
307 | playModeTestRunnerEnabled: 0
308 | runPlayModeTestAsEditModeTest: 0
309 | actionOnDotNetUnhandledException: 1
310 | enableInternalProfiler: 0
311 | logObjCUncaughtExceptions: 1
312 | enableCrashReportAPI: 0
313 | cameraUsageDescription:
314 | locationUsageDescription:
315 | microphoneUsageDescription:
316 | switchNetLibKey:
317 | switchSocketMemoryPoolSize: 6144
318 | switchSocketAllocatorPoolSize: 128
319 | switchSocketConcurrencyLimit: 14
320 | switchScreenResolutionBehavior: 2
321 | switchUseCPUProfiler: 0
322 | switchApplicationID: 0x01004b9000490000
323 | switchNSODependencies:
324 | switchTitleNames_0:
325 | switchTitleNames_1:
326 | switchTitleNames_2:
327 | switchTitleNames_3:
328 | switchTitleNames_4:
329 | switchTitleNames_5:
330 | switchTitleNames_6:
331 | switchTitleNames_7:
332 | switchTitleNames_8:
333 | switchTitleNames_9:
334 | switchTitleNames_10:
335 | switchTitleNames_11:
336 | switchTitleNames_12:
337 | switchTitleNames_13:
338 | switchTitleNames_14:
339 | switchPublisherNames_0:
340 | switchPublisherNames_1:
341 | switchPublisherNames_2:
342 | switchPublisherNames_3:
343 | switchPublisherNames_4:
344 | switchPublisherNames_5:
345 | switchPublisherNames_6:
346 | switchPublisherNames_7:
347 | switchPublisherNames_8:
348 | switchPublisherNames_9:
349 | switchPublisherNames_10:
350 | switchPublisherNames_11:
351 | switchPublisherNames_12:
352 | switchPublisherNames_13:
353 | switchPublisherNames_14:
354 | switchIcons_0: {fileID: 0}
355 | switchIcons_1: {fileID: 0}
356 | switchIcons_2: {fileID: 0}
357 | switchIcons_3: {fileID: 0}
358 | switchIcons_4: {fileID: 0}
359 | switchIcons_5: {fileID: 0}
360 | switchIcons_6: {fileID: 0}
361 | switchIcons_7: {fileID: 0}
362 | switchIcons_8: {fileID: 0}
363 | switchIcons_9: {fileID: 0}
364 | switchIcons_10: {fileID: 0}
365 | switchIcons_11: {fileID: 0}
366 | switchIcons_12: {fileID: 0}
367 | switchIcons_13: {fileID: 0}
368 | switchIcons_14: {fileID: 0}
369 | switchSmallIcons_0: {fileID: 0}
370 | switchSmallIcons_1: {fileID: 0}
371 | switchSmallIcons_2: {fileID: 0}
372 | switchSmallIcons_3: {fileID: 0}
373 | switchSmallIcons_4: {fileID: 0}
374 | switchSmallIcons_5: {fileID: 0}
375 | switchSmallIcons_6: {fileID: 0}
376 | switchSmallIcons_7: {fileID: 0}
377 | switchSmallIcons_8: {fileID: 0}
378 | switchSmallIcons_9: {fileID: 0}
379 | switchSmallIcons_10: {fileID: 0}
380 | switchSmallIcons_11: {fileID: 0}
381 | switchSmallIcons_12: {fileID: 0}
382 | switchSmallIcons_13: {fileID: 0}
383 | switchSmallIcons_14: {fileID: 0}
384 | switchManualHTML:
385 | switchAccessibleURLs:
386 | switchLegalInformation:
387 | switchMainThreadStackSize: 1048576
388 | switchPresenceGroupId:
389 | switchLogoHandling: 0
390 | switchReleaseVersion: 0
391 | switchDisplayVersion: 1.0.0
392 | switchStartupUserAccount: 0
393 | switchTouchScreenUsage: 0
394 | switchSupportedLanguagesMask: 0
395 | switchLogoType: 0
396 | switchApplicationErrorCodeCategory:
397 | switchUserAccountSaveDataSize: 0
398 | switchUserAccountSaveDataJournalSize: 0
399 | switchApplicationAttribute: 0
400 | switchCardSpecSize: -1
401 | switchCardSpecClock: -1
402 | switchRatingsMask: 0
403 | switchRatingsInt_0: 0
404 | switchRatingsInt_1: 0
405 | switchRatingsInt_2: 0
406 | switchRatingsInt_3: 0
407 | switchRatingsInt_4: 0
408 | switchRatingsInt_5: 0
409 | switchRatingsInt_6: 0
410 | switchRatingsInt_7: 0
411 | switchRatingsInt_8: 0
412 | switchRatingsInt_9: 0
413 | switchRatingsInt_10: 0
414 | switchRatingsInt_11: 0
415 | switchLocalCommunicationIds_0:
416 | switchLocalCommunicationIds_1:
417 | switchLocalCommunicationIds_2:
418 | switchLocalCommunicationIds_3:
419 | switchLocalCommunicationIds_4:
420 | switchLocalCommunicationIds_5:
421 | switchLocalCommunicationIds_6:
422 | switchLocalCommunicationIds_7:
423 | switchParentalControl: 0
424 | switchAllowsScreenshot: 1
425 | switchAllowsVideoCapturing: 1
426 | switchAllowsRuntimeAddOnContentInstall: 0
427 | switchDataLossConfirmation: 0
428 | switchUserAccountLockEnabled: 0
429 | switchSystemResourceMemory: 16777216
430 | switchSupportedNpadStyles: 3
431 | switchNativeFsCacheSize: 32
432 | switchIsHoldTypeHorizontal: 0
433 | switchSupportedNpadCount: 8
434 | switchSocketConfigEnabled: 0
435 | switchTcpInitialSendBufferSize: 32
436 | switchTcpInitialReceiveBufferSize: 64
437 | switchTcpAutoSendBufferSizeMax: 256
438 | switchTcpAutoReceiveBufferSizeMax: 256
439 | switchUdpSendBufferSize: 9
440 | switchUdpReceiveBufferSize: 42
441 | switchSocketBufferEfficiency: 4
442 | switchSocketInitializeEnabled: 1
443 | switchNetworkInterfaceManagerInitializeEnabled: 1
444 | switchPlayerConnectionEnabled: 1
445 | ps4NPAgeRating: 12
446 | ps4NPTitleSecret:
447 | ps4NPTrophyPackPath:
448 | ps4ParentalLevel: 11
449 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000
450 | ps4Category: 0
451 | ps4MasterVersion: 01.00
452 | ps4AppVersion: 01.00
453 | ps4AppType: 0
454 | ps4ParamSfxPath:
455 | ps4VideoOutPixelFormat: 0
456 | ps4VideoOutInitialWidth: 1920
457 | ps4VideoOutBaseModeInitialWidth: 1920
458 | ps4VideoOutReprojectionRate: 60
459 | ps4PronunciationXMLPath:
460 | ps4PronunciationSIGPath:
461 | ps4BackgroundImagePath:
462 | ps4StartupImagePath:
463 | ps4StartupImagesFolder:
464 | ps4IconImagesFolder:
465 | ps4SaveDataImagePath:
466 | ps4SdkOverride:
467 | ps4BGMPath:
468 | ps4ShareFilePath:
469 | ps4ShareOverlayImagePath:
470 | ps4PrivacyGuardImagePath:
471 | ps4NPtitleDatPath:
472 | ps4RemotePlayKeyAssignment: -1
473 | ps4RemotePlayKeyMappingDir:
474 | ps4PlayTogetherPlayerCount: 0
475 | ps4EnterButtonAssignment: 1
476 | ps4ApplicationParam1: 0
477 | ps4ApplicationParam2: 0
478 | ps4ApplicationParam3: 0
479 | ps4ApplicationParam4: 0
480 | ps4DownloadDataSize: 0
481 | ps4GarlicHeapSize: 2048
482 | ps4ProGarlicHeapSize: 2560
483 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
484 | ps4pnSessions: 1
485 | ps4pnPresence: 1
486 | ps4pnFriends: 1
487 | ps4pnGameCustomData: 1
488 | playerPrefsSupport: 0
489 | enableApplicationExit: 0
490 | resetTempFolder: 1
491 | restrictedAudioUsageRights: 0
492 | ps4UseResolutionFallback: 0
493 | ps4ReprojectionSupport: 0
494 | ps4UseAudio3dBackend: 0
495 | ps4SocialScreenEnabled: 0
496 | ps4ScriptOptimizationLevel: 0
497 | ps4Audio3dVirtualSpeakerCount: 14
498 | ps4attribCpuUsage: 0
499 | ps4PatchPkgPath:
500 | ps4PatchLatestPkgPath:
501 | ps4PatchChangeinfoPath:
502 | ps4PatchDayOne: 0
503 | ps4attribUserManagement: 0
504 | ps4attribMoveSupport: 0
505 | ps4attrib3DSupport: 0
506 | ps4attribShareSupport: 0
507 | ps4attribExclusiveVR: 0
508 | ps4disableAutoHideSplash: 0
509 | ps4videoRecordingFeaturesUsed: 0
510 | ps4contentSearchFeaturesUsed: 0
511 | ps4attribEyeToEyeDistanceSettingVR: 0
512 | ps4IncludedModules: []
513 | monoEnv:
514 | splashScreenBackgroundSourceLandscape: {fileID: 0}
515 | splashScreenBackgroundSourcePortrait: {fileID: 0}
516 | spritePackerPolicy:
517 | webGLMemorySize: 256
518 | webGLExceptionSupport: 1
519 | webGLNameFilesAsHashes: 0
520 | webGLDataCaching: 1
521 | webGLDebugSymbols: 0
522 | webGLEmscriptenArgs:
523 | webGLModulesDirectory:
524 | webGLTemplate: APPLICATION:Default
525 | webGLAnalyzeBuildSize: 0
526 | webGLUseEmbeddedResources: 0
527 | webGLCompressionFormat: 1
528 | webGLLinkerTarget: 1
529 | webGLThreadsSupport: 0
530 | scriptingDefineSymbols: {}
531 | platformArchitecture: {}
532 | scriptingBackend: {}
533 | il2cppCompilerConfiguration: {}
534 | managedStrippingLevel: {}
535 | incrementalIl2cppBuild: {}
536 | allowUnsafeCode: 0
537 | additionalIl2CppArgs:
538 | scriptingRuntimeVersion: 1
539 | apiCompatibilityLevelPerPlatform:
540 | Standalone: 3
541 | m_RenderingPath: 1
542 | m_MobileRenderingPath: 1
543 | metroPackageName: Template_3D
544 | metroPackageVersion:
545 | metroCertificatePath:
546 | metroCertificatePassword:
547 | metroCertificateSubject:
548 | metroCertificateIssuer:
549 | metroCertificateNotAfter: 0000000000000000
550 | metroApplicationDescription: Template_3D
551 | wsaImages: {}
552 | metroTileShortName:
553 | metroTileShowName: 0
554 | metroMediumTileShowName: 0
555 | metroLargeTileShowName: 0
556 | metroWideTileShowName: 0
557 | metroSupportStreamingInstall: 0
558 | metroLastRequiredScene: 0
559 | metroDefaultTileSize: 1
560 | metroTileForegroundText: 2
561 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
562 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,
563 | a: 1}
564 | metroSplashScreenUseBackgroundColor: 0
565 | platformCapabilities: {}
566 | metroTargetDeviceFamilies: {}
567 | metroFTAName:
568 | metroFTAFileTypes: []
569 | metroProtocolName:
570 | metroCompilationOverrides: 1
571 | XboxOneProductId:
572 | XboxOneUpdateKey:
573 | XboxOneSandboxId:
574 | XboxOneContentId:
575 | XboxOneTitleId:
576 | XboxOneSCId:
577 | XboxOneGameOsOverridePath:
578 | XboxOnePackagingOverridePath:
579 | XboxOneAppManifestOverridePath:
580 | XboxOneVersion: 1.0.0.0
581 | XboxOnePackageEncryption: 0
582 | XboxOnePackageUpdateGranularity: 2
583 | XboxOneDescription:
584 | XboxOneLanguage:
585 | - enus
586 | XboxOneCapability: []
587 | XboxOneGameRating: {}
588 | XboxOneIsContentPackage: 0
589 | XboxOneEnableGPUVariability: 1
590 | XboxOneSockets: {}
591 | XboxOneSplashScreen: {fileID: 0}
592 | XboxOneAllowedProductIds: []
593 | XboxOnePersistentLocalStorageSize: 0
594 | XboxOneXTitleMemory: 8
595 | xboxOneScriptCompiler: 1
596 | XboxOneOverrideIdentityName:
597 | vrEditorSettings:
598 | daydream:
599 | daydreamIconForeground: {fileID: 0}
600 | daydreamIconBackground: {fileID: 0}
601 | cloudServicesEnabled:
602 | UNet: 1
603 | luminIcon:
604 | m_Name:
605 | m_ModelFolderPath:
606 | m_PortalFolderPath:
607 | luminCert:
608 | m_CertPath:
609 | m_PrivateKeyPath:
610 | luminIsChannelApp: 0
611 | luminVersion:
612 | m_VersionCode: 1
613 | m_VersionName:
614 | facebookSdkVersion: 7.9.4
615 | facebookAppId:
616 | facebookCookies: 1
617 | facebookLogging: 1
618 | facebookStatus: 1
619 | facebookXfbml: 0
620 | facebookFrictionlessRequests: 1
621 | apiCompatibilityLevel: 6
622 | cloudProjectId:
623 | framebufferDepthMemorylessMode: 0
624 | projectName:
625 | organizationId:
626 | cloudEnabled: 0
627 | enableNativePlatformBackendsForNewInputSystem: 0
628 | disableOldInputManagerSupport: 0
629 | legacyClampBlendShapeWeights: 0
630 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 2018.4.0f1
2 |
--------------------------------------------------------------------------------
/ProjectSettings/QualitySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!47 &1
4 | QualitySettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 5
7 | m_CurrentQuality: 4
8 | m_QualitySettings:
9 | - serializedVersion: 2
10 | name: Very Low
11 | pixelLightCount: 0
12 | shadows: 0
13 | shadowResolution: 0
14 | shadowProjection: 1
15 | shadowCascades: 1
16 | shadowDistance: 15
17 | shadowNearPlaneOffset: 3
18 | shadowCascade2Split: 0.33333334
19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
20 | shadowmaskMode: 0
21 | blendWeights: 1
22 | textureQuality: 1
23 | anisotropicTextures: 0
24 | antiAliasing: 0
25 | softParticles: 0
26 | softVegetation: 0
27 | realtimeReflectionProbes: 0
28 | billboardsFaceCameraPosition: 0
29 | vSyncCount: 0
30 | lodBias: 0.3
31 | maximumLODLevel: 0
32 | streamingMipmapsActive: 0
33 | streamingMipmapsAddAllCameras: 1
34 | streamingMipmapsMemoryBudget: 512
35 | streamingMipmapsRenderersPerFrame: 512
36 | streamingMipmapsMaxLevelReduction: 2
37 | streamingMipmapsMaxFileIORequests: 1024
38 | particleRaycastBudget: 4
39 | asyncUploadTimeSlice: 2
40 | asyncUploadBufferSize: 16
41 | asyncUploadPersistentBuffer: 1
42 | resolutionScalingFixedDPIFactor: 1
43 | excludedTargetPlatforms: []
44 | - serializedVersion: 2
45 | name: Low
46 | pixelLightCount: 0
47 | shadows: 0
48 | shadowResolution: 0
49 | shadowProjection: 1
50 | shadowCascades: 1
51 | shadowDistance: 20
52 | shadowNearPlaneOffset: 3
53 | shadowCascade2Split: 0.33333334
54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
55 | shadowmaskMode: 0
56 | blendWeights: 2
57 | textureQuality: 0
58 | anisotropicTextures: 0
59 | antiAliasing: 0
60 | softParticles: 0
61 | softVegetation: 0
62 | realtimeReflectionProbes: 0
63 | billboardsFaceCameraPosition: 0
64 | vSyncCount: 0
65 | lodBias: 0.4
66 | maximumLODLevel: 0
67 | streamingMipmapsActive: 0
68 | streamingMipmapsAddAllCameras: 1
69 | streamingMipmapsMemoryBudget: 512
70 | streamingMipmapsRenderersPerFrame: 512
71 | streamingMipmapsMaxLevelReduction: 2
72 | streamingMipmapsMaxFileIORequests: 1024
73 | particleRaycastBudget: 16
74 | asyncUploadTimeSlice: 2
75 | asyncUploadBufferSize: 16
76 | asyncUploadPersistentBuffer: 1
77 | resolutionScalingFixedDPIFactor: 1
78 | excludedTargetPlatforms: []
79 | - serializedVersion: 2
80 | name: Medium
81 | pixelLightCount: 1
82 | shadows: 1
83 | shadowResolution: 0
84 | shadowProjection: 1
85 | shadowCascades: 1
86 | shadowDistance: 20
87 | shadowNearPlaneOffset: 3
88 | shadowCascade2Split: 0.33333334
89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
90 | shadowmaskMode: 0
91 | blendWeights: 2
92 | textureQuality: 0
93 | anisotropicTextures: 1
94 | antiAliasing: 0
95 | softParticles: 0
96 | softVegetation: 0
97 | realtimeReflectionProbes: 0
98 | billboardsFaceCameraPosition: 0
99 | vSyncCount: 1
100 | lodBias: 0.7
101 | maximumLODLevel: 0
102 | streamingMipmapsActive: 0
103 | streamingMipmapsAddAllCameras: 1
104 | streamingMipmapsMemoryBudget: 512
105 | streamingMipmapsRenderersPerFrame: 512
106 | streamingMipmapsMaxLevelReduction: 2
107 | streamingMipmapsMaxFileIORequests: 1024
108 | particleRaycastBudget: 64
109 | asyncUploadTimeSlice: 2
110 | asyncUploadBufferSize: 16
111 | asyncUploadPersistentBuffer: 1
112 | resolutionScalingFixedDPIFactor: 1
113 | excludedTargetPlatforms: []
114 | - serializedVersion: 2
115 | name: High
116 | pixelLightCount: 2
117 | shadows: 2
118 | shadowResolution: 1
119 | shadowProjection: 1
120 | shadowCascades: 2
121 | shadowDistance: 40
122 | shadowNearPlaneOffset: 3
123 | shadowCascade2Split: 0.33333334
124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
125 | shadowmaskMode: 1
126 | blendWeights: 2
127 | textureQuality: 0
128 | anisotropicTextures: 1
129 | antiAliasing: 2
130 | softParticles: 0
131 | softVegetation: 1
132 | realtimeReflectionProbes: 1
133 | billboardsFaceCameraPosition: 1
134 | vSyncCount: 1
135 | lodBias: 1
136 | maximumLODLevel: 0
137 | streamingMipmapsActive: 0
138 | streamingMipmapsAddAllCameras: 1
139 | streamingMipmapsMemoryBudget: 512
140 | streamingMipmapsRenderersPerFrame: 512
141 | streamingMipmapsMaxLevelReduction: 2
142 | streamingMipmapsMaxFileIORequests: 1024
143 | particleRaycastBudget: 256
144 | asyncUploadTimeSlice: 2
145 | asyncUploadBufferSize: 16
146 | asyncUploadPersistentBuffer: 1
147 | resolutionScalingFixedDPIFactor: 1
148 | excludedTargetPlatforms: []
149 | - serializedVersion: 2
150 | name: Very High
151 | pixelLightCount: 3
152 | shadows: 2
153 | shadowResolution: 2
154 | shadowProjection: 1
155 | shadowCascades: 2
156 | shadowDistance: 40
157 | shadowNearPlaneOffset: 3
158 | shadowCascade2Split: 0.33333334
159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
160 | shadowmaskMode: 1
161 | blendWeights: 4
162 | textureQuality: 0
163 | anisotropicTextures: 1
164 | antiAliasing: 4
165 | softParticles: 1
166 | softVegetation: 1
167 | realtimeReflectionProbes: 1
168 | billboardsFaceCameraPosition: 1
169 | vSyncCount: 1
170 | lodBias: 1.5
171 | maximumLODLevel: 0
172 | streamingMipmapsActive: 0
173 | streamingMipmapsAddAllCameras: 1
174 | streamingMipmapsMemoryBudget: 512
175 | streamingMipmapsRenderersPerFrame: 512
176 | streamingMipmapsMaxLevelReduction: 2
177 | streamingMipmapsMaxFileIORequests: 1024
178 | particleRaycastBudget: 1024
179 | asyncUploadTimeSlice: 2
180 | asyncUploadBufferSize: 16
181 | asyncUploadPersistentBuffer: 1
182 | resolutionScalingFixedDPIFactor: 1
183 | excludedTargetPlatforms: []
184 | - serializedVersion: 2
185 | name: Ultra
186 | pixelLightCount: 4
187 | shadows: 2
188 | shadowResolution: 2
189 | shadowProjection: 1
190 | shadowCascades: 4
191 | shadowDistance: 150
192 | shadowNearPlaneOffset: 3
193 | shadowCascade2Split: 0.33333334
194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
195 | shadowmaskMode: 1
196 | blendWeights: 4
197 | textureQuality: 0
198 | anisotropicTextures: 1
199 | antiAliasing: 4
200 | softParticles: 1
201 | softVegetation: 1
202 | realtimeReflectionProbes: 1
203 | billboardsFaceCameraPosition: 1
204 | vSyncCount: 1
205 | lodBias: 2
206 | maximumLODLevel: 0
207 | streamingMipmapsActive: 0
208 | streamingMipmapsAddAllCameras: 1
209 | streamingMipmapsMemoryBudget: 512
210 | streamingMipmapsRenderersPerFrame: 512
211 | streamingMipmapsMaxLevelReduction: 2
212 | streamingMipmapsMaxFileIORequests: 1024
213 | particleRaycastBudget: 4096
214 | asyncUploadTimeSlice: 2
215 | asyncUploadBufferSize: 16
216 | asyncUploadPersistentBuffer: 1
217 | resolutionScalingFixedDPIFactor: 1
218 | excludedTargetPlatforms: []
219 | m_PerPlatformDefaultQuality: {}
220 |
--------------------------------------------------------------------------------
/ProjectSettings/TagManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!78 &1
4 | TagManager:
5 | serializedVersion: 2
6 | tags: []
7 | layers:
8 | - Default
9 | - TransparentFX
10 | - Ignore Raycast
11 | -
12 | - Water
13 | - UI
14 | -
15 | -
16 | - PostProcessing
17 | -
18 | -
19 | -
20 | -
21 | -
22 | -
23 | -
24 | -
25 | -
26 | -
27 | -
28 | -
29 | -
30 | -
31 | -
32 | -
33 | -
34 | -
35 | -
36 | -
37 | -
38 | -
39 | -
40 | m_SortingLayers:
41 | - name: Default
42 | uniqueID: 0
43 | locked: 0
44 |
--------------------------------------------------------------------------------
/ProjectSettings/TimeManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!5 &1
4 | TimeManager:
5 | m_ObjectHideFlags: 0
6 | Fixed Timestep: 0.02
7 | Maximum Allowed Timestep: 0.1
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/ProjectSettings/UnityConnectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!310 &1
4 | UnityConnectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 1
7 | m_Enabled: 1
8 | m_TestMode: 0
9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com
12 | m_TestInitMode: 0
13 | CrashReportingSettings:
14 | m_EventUrl: https://perf-events.cloud.unity3d.com
15 | m_Enabled: 0
16 | m_LogBufferSize: 10
17 | m_CaptureEditorExceptions: 1
18 | UnityPurchasingSettings:
19 | m_Enabled: 0
20 | m_TestMode: 0
21 | UnityAnalyticsSettings:
22 | m_Enabled: 0
23 | m_TestMode: 0
24 | m_InitializeOnStartup: 1
25 | UnityAdsSettings:
26 | m_Enabled: 0
27 | m_InitializeOnStartup: 1
28 | m_TestMode: 0
29 | m_IosGameId:
30 | m_AndroidGameId:
31 | m_GameIds: {}
32 | m_GameId:
33 | PerformanceReportingSettings:
34 | m_Enabled: 0
35 |
--------------------------------------------------------------------------------
/ProjectSettings/VFXManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!937362698 &1
4 | VFXManager:
5 | m_ObjectHideFlags: 0
6 | m_IndirectShader: {fileID: 0}
7 | m_CopyBufferShader: {fileID: 0}
8 | m_SortShader: {fileID: 0}
9 | m_RenderPipeSettingsPath:
10 | m_FixedTimeStep: 0.016666668
11 | m_MaxDeltaTime: 0.05
12 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # RuntimeTextureAtlas
2 |
3 | Pack multiple textures into one rendertexture at runtime.
4 |
5 | ## How To Use
6 | ```c#
7 | RawImage image;
8 | Texture texture;
9 | ...
10 | image.PackTexture(texture);
11 | ```
12 |
13 | ## Usecase
14 |
15 | for a UI Scene which have 5 RawImage controls:
16 | 
17 |
18 | RTA pack all five texture into a rendertexture:
19 | 
20 |
21 | 4 drawcall saved.
22 |
23 | | without RTA | with RTA |
24 | | ------------------------------------------- | -------------------------------------------|
25 | |  |  |
26 |
27 |
--------------------------------------------------------------------------------