В Unity есть возможность создавать ScriptableObject. Зачастую это некий контейнер где удобно хранить данные. Он легче и не обладает избыточностью MonoBehaviour.
Создадим:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
[System.Serializable]
public class OnePool2 : ScriptableObject
{
[HideInInspector]
public string myName;
public List<OnePool2Element> elements;
}
Но чтобы создать сам объект для заполнения понадобиться создать скрипт для редактора.
using UnityEngine;
using UnityEditor;
using System;
using System.Collections.Generic;
public class OnePool2Asset
{
[MenuItem("Window/PiTool/Create Pool2 Asset")]
public static void CreateAsset()
{
OnePool2 asset = ScriptableObject.CreateInstance<OnePool2>();
AssetDatabase.CreateAsset(asset, "Assets/Resources/Pool/pool.asset");
AssetDatabase.SaveAssets();
EditorUtility.FocusProjectWindow();
Selection.activeObject = asset;
}
}
Теперь чтобы загрузить можно использовать что то наподобие:
public static void LoadPool(string name)
{
if (!_isInitialized)
Initialize();
//Debug.Log("PIP Loading pool: " + name);
if (_instance.GetPool(name) == null)
{
OnePool2 pool = Resources.Load(_path + name) as OnePool2;
if (pool != null)
{
pool = Instantiate(pool) as OnePool2;
pool.myName = name;
_instance._pools.Add(pool);
for (int i = 0; i < pool.elements.Count; ++i)
pool.elements[i].Initialize(_instance._myTransform);
}
}
}
Комментарии
Отправить комментарий