当开发者需要在游戏中生成一个随机资源时,可以定义一个Public的类进行拖拽赋值,但当我们需要对同一资源进行多次拖拽赋值时,可以创建一个资源管理器来管理资源。
一、如何创建资源管理器
创建一个资源管理器,可以将游戏中需要的资源放在管理器中统一管理:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
[CreateAssetMenu(menuName="ManagerVarsContainer")]
public class ManagerVars : ScriptableObject {
public List<Sprite> bgThemeSpriteList = new List<Sprite> ();
}
点击Assets/Create/CreateManagerVarsContainer按钮,会生成一个.asset后缀的文件,在上面脚本中定义的资源,会显示在这个文件的面板上,最后将Sprite的资源赋值给ManagerVarsContainer.asset的bgThemeSpriteList数组即可。
二、如何调用资源管理器
在资源管理器中定义一个静态的方法:
public static ManagerVars GetManagerVars(){
return Resources.Load<ManagerVars> ("ManagerVarsContainer");
}
再从其他脚本中调用ManagerVars的静态方法:
using UnityEngine;
using System.Collections;
public class BgTheme : MonoBehaviour {
private SpriteRenderer m_SpriteRenderer;
private ManagerVars vars;
private void Awake(){
vars = ManagerVars.GetManagerVars ();
m_SpriteRenderer = GetComponent<SpriteRenderer> ();
int ranValue = Random.Range (0, vars.bgThemeSpriteList.Count);
m_SpriteRenderer.sprite = vars.bgThemeSpriteList [ranValue];
}
}
备注:定义静态方法前需要在Assets中创建一个Resources的资源文件夹,将脚本ManagerVars与所生成的资源ManagerVarsContainer放置文件夹中,否则会报出超出索引范围的错误。