мой код довольно прост, но я новичок в единстве ... я пытаюсь сделать так, чтобы я мог бросать свои предметы на землю, когда я тащу из своего инвентаря, но не могу это сделать, с несколько последовательных ошибок. У меня есть префаб (только что узнал о них сегодня), который я пытаюсь изменить его рендерер спрайтов и создать его. Вот мой код:
public class ItemWorld : MonoBehaviour
{
private Transform prefab;
private Item item;
private SpriteRenderer spriteRenderer;
void Start()
{
prefab = Resources.Load("Prefabs/pfItemWorld") as GameObject;
//myPrefab = Resources.Load("Prefabs/pfItemWorld");
}
public static ItemWorld spawnItemWorld(Vector3 position, Item item)
{
Transform transform = Instantiate(prefab, position, Quaternion.identity);
ItemWorld itemWorld = transform.GetComponent<ItemWorld>();
itemWorld.SetItem(item);
return itemWorld;
}
private void Awake()
{
spriteRenderer = GetComponent<SpriteRenderer>();
}
public void SetItem(Item item)
{
this.item = item;
Rect spriteRect = new Rect(0, 0, item.itemIcon.width, item.itemIcon.height);
Sprite mySprite = Sprite.Create(item.itemIcon, spriteRect, new Vector2(0.5f, 0.5f));
spriteRenderer.sprite = mySprite;
}
}
Моя проблема в том, что я не могу загрузить префаб и использовать его в Instantiate без многих ошибок ... Что не так с моим кодом? Вот ошибки:
(1) Assets \ Scripts \ ItemWorld.cs (12,18): ошибка CS0029: невозможно неявное преобразование типа «UnityEngine.GameObject» в «UnityEngine.Transform» (да, я знаю что это значит, но как я могу использовать префаб без преобразования)
(2) Assets \ Scripts \ ItemWorld.cs (17,43): ошибка CS0120: ссылка на объект требуется для не c поле, метод или свойство 'ItemWorld.prefab'
Я пытался исследовать, но это моя последняя надежда xd Я буду рад любой помощи, спасибо, Gambizon