Displaying an image from a resource folder.

Hey, folks. So my game needs to import an image from a folder in the project, at runtime. I’ve tried doing this with www.texture, as per the Unity script reference, but no luck – it keeps telling me there’s nothing at the location where I’m looking for my image. I know it’s there, because I’m doing a test to see if I can force it to work with a simple path name. But no go. Here’s my script:

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {
    private string url = @"C:\Users\USER\Desktop\Accessible\Assets\IO\Books\stupid.jpg";
    IEnumerator Start() {
        WWW www = new WWW(url);
        yield return www;
        renderer.material.mainTexture = www.texture;

And the error I’m getting is:

You are trying to load data from a www stream which had the following error when downloading.
Could not resolve host: C:\Users\USER\Desktop\Accessible\Assets\IO\Books\stupid.jpg; Host not found
c__Iterator4:MoveNext() (at Assets/Test.cs:9)

In desperation, I’m also attempting to use Resources.Load() to do this, but nothing happens at all when I press play – I assume it’s just breaking out when it hits an error:

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {
	private string path = @"C:\Users\USER\Desktop\Accessible\Assets\IO\Books\stupid.jpg";
    void Start() {
        renderer.material.mainTexture = Resources.Load(path) as Texture;

What do you think? What am I missing here? I feel like it’s something obvious.


Never mind. All I had to do to the first bit of code was add “file://” to it. Bah, humbug. Working path: file://C:\Users\USER\Desktop\Accessible\Assets\IO\Books\stupid.jpg

To declare a full path name like that might cause issues on a build because it can no longer reference the object with the given path.

To use Resource.Load(), You need to be sure to have the asset you want loaded in the Resources folder. Once there, you can call it.

Image myImage = Resources.Load("IO/Books/Stupid", typeof(Image)) as Image;

In order to use the Image type, you must be using the UnityEngine.UI namespace.

If you’re simply using it as a Texture, then try:

Texture myTexture = Resources.Load("IO/Books/Stupid", typeof(Texture)) as Texture;

In the paths above, Resource folder is not necessary to declare or forwardslash the beginning of the path.