unity随机获取背景图片

获取图片

通常我们在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版权协议,转载请附上原文出处链接和本声明。