资源文件夹中有如下这张图片:(这张图片没有直接在面板中赋给任何对象,现在要用代码将它拉取出来,赋给一个Image对象从而运行后显示出来)
x
同步的加载方式:
void Start()
{
//同步加载
//加载Resources文件夹里的文件
GameObject.Find("/Canvas/Image").GetComponent<Image>().sprite = Resources.Load<Sprite>("p99650668");
}
异步的加载方式:
void Start()
{
//通过开启协同,执行一个异步Resources/AB加载资源
StartCoroutine(LoadResources());
}
//加载资源会增加内存
IEnumerator LoadResources()
{
//开启一个异步加载
ResourceRequest rr = Resources.LoadAsync<Sprite>("p996506681");
//协同会在加载资源成功后,继续执行(底层封装了线程加载资源)
yield return rr;
//将加载的资源显示出来
GameObject.Find("/Canvas/Image").GetComponent<Image>().sprite = rr.asset as Sprite;
}
注意,要添加UI的命名空间,才能对UI操作。
另外,这个脚本可以挂载在任何一个游戏物体身上,因为GameObject.Find()可以找到UI。