visual-studio - 物品掉落系统 - 我怎样才能在这里正确使用预制件?
问题描述
我的代码很简单,但我对统一很陌生......我试图做到这一点,这样当我从库存中拖出时我可以把我的物品放在地上,但不能完全做到这一点,有一些一致的错误。我有一个预制件(今天才知道),我试图改变它的精灵渲染器并生成它。这是我的代码:
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;
}
}
我的问题是我无法加载我的预制件并在实例化中使用它而不会出现很多错误......我的代码有什么问题?以下是错误:
(1) Assets\Scripts\ItemWorld.cs(12,18): 错误 CS0029: 无法将类型“UnityEngine.GameObject”隐式转换为“UnityEngine.Transform”(是的,我知道这意味着什么,但我如何使用预制件没有变换)
(2)Assets\Scripts\ItemWorld.cs(17,43): error CS0120: an object reference is required for the non-static field, method, or property 'ItemWorld.prefab'
我曾尝试研究,但这是我最后的希望 xd 很高兴得到任何帮助,谢谢,Gambizon
解决方案
Prefabs 是 GameObjects 并且需要被实例化和声明。private transform prefab
应该是private GameObject prefab
。
实例化对象后
GameObject prefabObject = Instantiate(prefab, position, Quaternion.identity);
然后,您可以使用Transform transform = prefabObject.transform;
来获取新实例化的预制件的转换组件。
此外,如果您将脚本中的预制件引用公开,并将此脚本附加到游戏对象,您可以将预制件拖到检查器中,这样您就不需要Resources.Load("Prefabs/pfItemWorld") as GameObject
了,因为在运行之前引用就已经存在了。
推荐阅读
- android - Android Node.js Socket.io 在签署 apk 后未在 Kitkat 4.4 版本中连接
- php - 注册页面上的 PHP 错误:注意:未定义索引:第 27 行 C:\xampp\htdocs\Marcus\signup.php 中的注册
- javascript - 不在 jstree 和 Angular 中显示列表
- sql - 将多条记录连接到一条记录
- node.js - 资源 URL 上下文中使用的不安全值
- c# - 连接触摸屏时鼠标滞后,没有时几乎没有滞后
- javascript - 异步返回值
- c++ - 如何让我的 .exe 与 .dll 分离?
- ruby-on-rails - 在 Rails 控制台中,我如何在表格中找到下面的记录
- java - 如何修复 java.lang.StringIndexOutOfBoundsException: length=225; 区域开始=4;区域长度=-2