Вам не нужно Resources
в путях к ресурсам. Prefabs/Battle/SlotAlliedPrefab
должен выполнить работу при условии, что это правильный путь к активу. Во-первых, дважды проверьте ваши пути. Затем используйте нестандартный Resources.Load()
для загрузки ресурса, затем проверьте его тип (желательно с отладчиком, используйте VSTS, если вы этого еще не сделали). Вы можете не иметь правильный тип актива по этому пути. Если Resources.Load()
возвращает ноль, возможно, вы выбрали неверный путь, возможно, опечатка.
РЕДАКТИРОВАТЬ: Вы должны хранить свои активы в папке ресурсов. Но путь, который вы передадите к Resources.Load
, будет относительно корня ближайшей папки Resources. Например, если у вас есть актив по адресу:
Assets\MyGame\Models\Resources\Category1\SomeModel
Вы загрузите его так:
Resources.Load("Category1\SomeModel")
Это означает, что вы можете получить неопределенное поведение, если у вас есть разные ресурсы с одинаковым именем в разных папках ресурсов. Это работает только для ресурсов внутри папок ресурсов, так как они обрабатываются по-разному во время сборки и упаковки.
Насчет неуниверсального Load
, я имею в виду, вы должны сделать это так:
var myResource = Resources.Load("SomePath");
var myGameObject = myResource as GameObject;
Таким образом, вы можете пройтись по своему коду и посмотреть, что внутри myResource
. Это делается для того, чтобы убедиться, что вы проходите правильный путь. Если myResource
не равно нулю, вы можете увидеть, что это за актив. Возможно, вы загружаете аудиоклип вместо префаба, который вы ищете.