C# 调整统一精灵的大小

C# 调整统一精灵的大小,c#,unity3d,compiler-errors,sprite,C#,Unity3d,Compiler Errors,Sprite,所以我在为大学做这个小游戏,我遇到了一个调整精灵大小的问题。我的游戏就像一个图形冒险(猴子岛,可怕的凡丹戈等),它有一个可以保存物品的清单问题是,虽然世界对象精灵很好,大小也不同,但我希望它们的精灵在创建时能够调整大小,并将其保存在资源清册中,以便能够适应 我认为这是使用Bounds类完成的,但是我对它有一些问题。另外:我所遵循的教程做了一些事情,在它的时间可能会工作,但现在它给了我一个编译错误。下面显示保存项目(并在此过程中调整其精灵大小)的我的功能: void SaveInventoryIt

所以我在为大学做这个小游戏,我遇到了一个调整精灵大小的问题。我的游戏就像一个图形冒险(猴子岛,可怕的凡丹戈等),它有一个可以保存物品的清单问题是,虽然世界对象精灵很好,大小也不同,但我希望它们的精灵在创建时能够调整大小,并将其保存在资源清册中,以便能够适应

我认为这是使用
Bounds
类完成的,但是我对它有一些问题。另外:我所遵循的教程做了一些事情,在它的时间可能会工作,但现在它给了我一个编译错误。下面显示保存项目(并在此过程中调整其精灵大小)的我的功能:

void SaveInventoryItem()
{
字符串名称=transform.parent.gameObject.name;
GameObject temporaryObject=实例化(inventoryItemPrefab);
temporaryObject.name=名称;
temporaryObject.gameObject.GetComponent().sprite=transform.parent.GetComponent().sprite;
temporaryObject.transform.parent=inventoryCanvas.transform;
temporaryObject.transform.position=Vector3.forward*-1;
temporaryObject.gameObject.getComponentChildren().InteractiveText=“Usar”+名称;

Bounds Bounds=temporaryObject.gameObject.GetComponent().sprite.Bounds.size; 浮动系数=General.inventoryItemSize/bounds.size.y; }

错误说明无法从UnityEngine.Vector3转换为UnityEngine.Bounds


如果有人知道解决此错误的方法或以默认大小调整精灵大小的其他方法,请告诉我。

查看@Erik Overflows评论。在清单系统中使用canvas类,该类将包含一组具有正确设置大小的图像。然后您可以将精灵分配给图像,它应该自动调整大小。

正如Erik在他的评论中所说,您可以将清单中UI画布元素的图像设置为精灵,它将自动将精灵与UI元素匹配。然后,当添加或删除库存项目时,您只需使用figbar建议的系统将精灵分配给您的图像

“Bounds Bounds=temporaryObject.gameObject.GetComponent().sprite.Bounds;”应该可以工作。也就是说,如果您正在使用Unity的UI画布功能进行库存,那么您根本不需要修改精灵的大小。如果您在UI中的库存项目上有一个图像组件,只需将精灵分配给它们即可。
void SaveInventoryItem()
{
    string name = transform.parent.gameObject.name;
    GameObject temporaryObject = Instantiate(inventoryItemPrefab);
    temporaryObject.name = name;
    temporaryObject.gameObject.GetComponent<SpriteRenderer>().sprite = transform.parent.GetComponent<SpriteRenderer>().sprite;
    temporaryObject.transform.parent = inventoryCanvas.transform;

    temporaryObject.transform.position = Vector3.forward * -1;
    temporaryObject.gameObject.GetComponentInChildren<InteractZone>().interactText = "Usar " + name;

    Bounds bounds = temporaryObject.gameObject.GetComponent<SpriteRenderer>().sprite.bounds.size ;
    float factor = General.inventoryItemSize / bounds.size.y;
}