Unity 创建资源管理器容器

从我刚开始学习Unity的时候,要在脚本中取得某个物体的引用时候,无非就一个方法,就是在Inspector面板中进行拖拽。当然这种方法对于新手入门来说再好不过了,也很容易理解,但当我们需要对同一资源进行多次拖拽赋值时,可以创建一个资源管理器来管理资源。

下面这种方法是把需要的物体都拖拽到一个Asset文件中,再在代码中加载这个Asset文件。比在每个脚本中都拖拽的方法更加简洁好用。

一、如何创建资源管理器

创建一个资源管理器,可以将游戏中需要的资源放在管理器中统一管理:

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放置文件夹中,否则会报出超出索引范围的错误。

你可能感兴趣的:(Unity 创建资源管理器容器)