我正在查看我刚刚开始合作的Unity项目的源代码。我找不到Unity在项目中的哪个位置将文件名与C#脚本中引用的Image
对象相关联。 (我是Unity的新手)
游戏运行良好,所以我知道Unity可以加载图像,并且C#脚本中有多个位置引用了特定的图像,但是我在脚本中找不到任何位置来定义哪个文件。从Image
加载public Image sprite1 = loadImage("art.png");
。
这些精灵是通过Unity编辑器导入的,因此我不确定Unity是否将这些图像与文件名关联在项目本身,某些非人类可读文件或Unity程序文件中(即,外部)版本控制)。
我主要担心的是,我对这些Sprite所做的任何更改都不会反映在版本控制中,因为在任何跟踪的文件之外都可能定义了一些关键的关系。
答案 0 :(得分:1)
图像引用通常由拖放系统处理,在场景视图或预制件中带有脚本的对象将引用通过Unity GUI设置的图像之类的内容。
尝试使用搜索栏并为您的图像键入确切的名称,这样可以拉动场景中的所有游戏对象以及引用该对象的项目中的所有预制件。
一些其他有关此工作原理的背景:(您不需要知道这一点,但它很方便)
Unity解析它检测到的所有内容文件,并为它们分配一个.meta文件,该文件包含一个唯一的GUID,Unity用于跟踪和引用该特定资产。与预制件和场景关联的其他元文件将在内部具有该Guid的引用,以保留对该特定资产的引用。这对确保您签入已更改的.meta文件至关重要!它们不是本地文件,它们非常重要!
Unity用于统一处理版本控制的插件应自动检出更改那些引用的文件,通常这非常简单。进行重命名或移动文件之类的简单操作将保留内部guid,因此这是完全安全的(只记得在unity编辑器中内部重命名和移动文件!您可以在外部重定位文件,只需确保您可以不要丢失.meta文件)
答案 1 :(得分:0)
Unity通过GUID引用图像,该图像在导入时分配给导入的文件,并保存到不可见的.meta文件中。只要您更改图像文件名及其对应的.meta文件名,并保留GUID,无论实际文件名如何(只要保留GUID),Unity都会保留引用。
重要的一点是,您绝不要丢失.meta文件(确保由版本控制对其进行跟踪),就像这样做一样,unity将为该文件生成一个新的随机GUID,并且将永远不会恢复关系返回,这对于项目来说可能是灾难性的。
当然,这不适用于在运行时加载的由文件名引用的图像。