获取图片
通常我们在unity中获取图片的方式是建立一个public数组,通过拖拽的方式来给数组赋值,这种方法容易在使用新unity版本运行时丢失图片。只适合初学者使用,今天我们来介绍一种新的方法。
步骤
创建一个新脚本让它继承自ScriptableObject类;
添加一个标题[CreateAssetMenu(menuName =“CreatMangerVarsContainer”)]用于创建一个带有Asset后缀的文件
[CreateAssetMenu(menuName ="CreatMangerVarsContainer")]//创建用asset结尾的文件
public class MangerVers :ScriptableObject//继承自该类
{
}
我们可以看到我们的Create中多了你创建的标题,点击创建后
我们就可以的到一个这样的文件,我们打开文件看一下里面都包含了什么
可以看到创建好了一个带有Asset后缀的文件,我们可以在这个文件中储存你想要调用的东西,这就是我们创建的资源管理器容器
现在我们创建一个列表来存储一下背景图
[CreateAssetMenu(menuName ="CreatMangerVarsContainer")]//创建用asset结尾的文件
public class MangerVers :ScriptableObject//继承自该类
{
public List<Sprite> bgThemeSpriteList = new List<Sprite>();//创建列表在MangerVarsContoner中存储背景图
}
我们再在管理器中拖入想要调用的图片
我们再在创建一个静态方法让别的类来调用,我们需要把该资源管理器
放在Resources文件夹中。
这样我们就能通过resource.load加载这个脚本了
public class MangerVers :ScriptableObject//继承自该类
{
public static MangerVers GetMangerVers()
{
return Resources.Load<MangerVers>("MangerVarsContoner");//通过resource.load加载
}
public List<Sprite> bgThemeSpriteList = new List<Sprite>();//创建列表在MangerVarsContoner中存储背景图
}
我们新建一个类来应用一下
public class BgTheme : MonoBehaviour
{
//随机背景
private SpriteRenderer m_SpriteRenderer;
private MangerVers vars;
private void Awake()
{
m_SpriteRenderer = GetComponent<SpriteRenderer>();
vars = MangerVers.GetMangerVers();//把存在管理器容器的图片取出
int ranValue = Random.Range(0, vars.bgThemeSpriteList.Count);//随机一个背景图
m_SpriteRenderer.sprite = vars.bgThemeSpriteList[ranValue];//把图赋值给背景
}
}
这样我们就可以随机获得背景图片了
最后不要忘记把[CreateAssetMenu(menuName=“CreatMangerVarsContainer”)]注释掉
效果
版权声明:本文为zhang_by0_0原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。