45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
| 
								 | 
							
								using System.Collections;
							 | 
						|||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						|||
| 
								 | 
							
								using UnityEngine;
							 | 
						|||
| 
								 | 
							
								using UnityEditor;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace YooAsset.Editor
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									public class SettingLoader
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										/// <summary>
							 | 
						|||
| 
								 | 
							
										/// 加载相关的配置文件
							 | 
						|||
| 
								 | 
							
										/// </summary>
							 | 
						|||
| 
								 | 
							
										public static TSetting LoadSettingData<TSetting>() where TSetting : ScriptableObject
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											var settingType = typeof(TSetting);
							 | 
						|||
| 
								 | 
							
											var guids = AssetDatabase.FindAssets($"t:{settingType.Name}");
							 | 
						|||
| 
								 | 
							
											if (guids.Length == 0)
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												Debug.LogWarning($"Create new {settingType.Name}.asset");
							 | 
						|||
| 
								 | 
							
												var setting = ScriptableObject.CreateInstance<TSetting>();
							 | 
						|||
| 
								 | 
							
												string filePath = $"Assets/{settingType.Name}.asset";
							 | 
						|||
| 
								 | 
							
												AssetDatabase.CreateAsset(setting, filePath);
							 | 
						|||
| 
								 | 
							
												AssetDatabase.SaveAssets();
							 | 
						|||
| 
								 | 
							
												AssetDatabase.Refresh();
							 | 
						|||
| 
								 | 
							
												return setting;
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											else
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												if (guids.Length != 1)
							 | 
						|||
| 
								 | 
							
												{
							 | 
						|||
| 
								 | 
							
													foreach (var guid in guids)
							 | 
						|||
| 
								 | 
							
													{
							 | 
						|||
| 
								 | 
							
														string path = AssetDatabase.GUIDToAssetPath(guid);
							 | 
						|||
| 
								 | 
							
														Debug.LogWarning($"Found multiple file : {path}");
							 | 
						|||
| 
								 | 
							
													}
							 | 
						|||
| 
								 | 
							
													throw new System.Exception($"Found multiple {settingType.Name} files !");
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
												string filePath = AssetDatabase.GUIDToAssetPath(guids[0]);
							 | 
						|||
| 
								 | 
							
												var setting = AssetDatabase.LoadAssetAtPath<TSetting>(filePath);
							 | 
						|||
| 
								 | 
							
												return setting;
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 |