[System.Serializable]
public class Info : ScriptableObject
{
[SerializeField]
public string str = "";
[SerializeField]
public int count = 1;
}
[MenuItem("MyMenu/CreatInfo")]
static void CreatInfo()
{
Info info = ScriptableObject.CreateInstance<Info>();
info.str = "Test";
info.count = 10;
//注意 后缀要是.asset
AssetDatabase.CreateAsset(info, string.Format("Test-{0:yyyyMMdd-HHmmss}.asset", DateTime.Now));
AssetDatabase.SaveAssets();
}
using System.Collections;
using System.Collections.Generic;using UnityEngine;
using System;
using UnityEngine.UI;
[Serializable]
public class DetailInfo {
[SerializeField]
private string str;
public string Str { get { return str; } }
[SerializeField]
private Image image;
public Image Image { get { return image; } }
[SerializeField]
private AudioSource audioSource;
public AudioSource AudioSource { get { return audioSource; } }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public abstract class BaseDetailList<T> : ScriptableObject where T : DetailInfo{
[SerializeField]
protected List<T> details;
public T GetDetails(int index)
{
return details[index];
}
public int GetCount()
{
return details.Count;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName ="detailInfo",menuName ="Creat/CreatDetailInfos",order =1)]
public class DetailList : BaseDetailList<DetailInfo>
{
}
using System.Collections.Generic;
using UnityEngine;
public class DetailShowPanel : MonoBehaviour {
public DetailList infos;
public int currentIndex;
void Start()
{
DetailInfo info = infos.GetDetails(currentIndex);
Debug.LogError(info.Str);
}
}