The method Resources.Load does not accept strings after splitting.

There is a text file paths.txt in the Resources folder, which contains the paths to the prefabs. The paths look like this:

Test\Object001
Test\Object002

While they might look like a backslash too, it makes no difference:

Test/Object001
Test/Object002

The forward slash "" is created automatically when the file is generated, but it shouldn’t matter since I’ve tried both, changing it manually to “/”.

Next, I want to load the prefabs using Resources.Load by reading lines from this text file. But newPrefab turns out to be null already when reading the first line, although the line is loaded correctly: Debug.Log (str) shows the correct value in the console.

TextAsset prefabsDatabase = (TextAsset)Resources.Load("paths", typeof(TextAsset));

foreach (string str in prefabsDatabase.text.Split('

'))
{
Debug.Log(str);
StreamerBase newPrefab = Resources.Load(str);
}

The weird thing is that if I manually enter the prefab address directly into the method, it works:

StreamerBase newPrefab = Resources.Load<StreamerBase>("Test/Object001");

This will load Object001.prefab. Why does the line obtained from the file using foreach, displayed correctly in the console, do not work with Resources.Load, although if you copy the line from the console and enter it manually into the method, it will work correctly? I don’t even have possible guesses. I tried different encoding for the file (ANSI and UTF-8), nothing changes.

If i leave only one line in the file:

Test\Object001

And remove Split(’
')
from method, then the object will load normally.

TextAsset prefabsDatabase = (TextAsset)Resources.Load("paths", typeof(TextAsset));
StreamerBase newPrefab = Resources.Load<StreamerBase>(prefabsDatabase.text.ToString());

What’s the matter? I do not understand! Could the problem be in using the Split method? Why doesn’t the Resources.Load method accept strings?

@Lesnikus5

I had the same problem; Fix is by cleaning the resulting string with “.Trim()”


So rather than doing it like so (The wrong way)

string directorystring = ("what ever your result from .split was")
Resources.Load<Sprite>(directorystring);

You clean it up like this (The right way)

string directoryString = ("what ever your result from .split was")
string directoryStringCleaned = directorystring.Trim();
Resources.Load<Sprite>(directoryStringCleaned);

My assumption for why this occurs is because the split leaves an invisible blank space on the end of the string there? Resulting the string to not be the correct directory while looking like it to the human eye.