Короче, пошёл таким путём.
Создал рав имэйдж, натянул на него текстуру,
сделал из него ассет. Загружаю ассет через SetParent
прикрепляя к объекту внутри холста.
Так работает.
public class FuckingMonIcon : MonoBehaviour
{
public Transform Robj; // Родительский объект внутри канваса
public GameObject MonsterIcon1; // Ассет RawImage
public void Start()
{
Instantiate(MonsterIcon1).transform.SetParent(Robj);
}
}
Пробовал то же самое через transform.parent,
юнити грузил ассет, но восклицательными знаками ругался
типа делай через SetParent, сделал, результат - ругаться перестал.
В transform.parent родительским объектом Robj являлся GameObjectom,
а в SetParent Robj должен быть не гейм обжектом, а Transform,
координатами объекта короче.
В случае кода выше, рав имэйдж грузится в глобальных координатах,
если хотим вляпать в локальных, тобишь прямо на объект к которому лепим внутри
канваса то нужно добавить параметр "false":
Instantiate(MonsterIcon1).transform.SetParent(Robj, false);
Если в SetParent в скобках поставить "null", то загружаемый рав имйёдж
не будет привязан к холсту, а улетит в иерархию как самостоятельный объект.
Instantiate(MonsterIcon1).transform.SetParent(null);