C# Unity不显示精灵/纹理
我刚开始使用Unity,但在最基本的操作方面遇到了问题——让图像出现在屏幕上 我已经尝试过对此进行研究,但几乎所有关于Unity的教程/信息都是关于更高级的用法的,没有涵盖基础知识。关于基本图像加载和绘制的信息很少 我的项目有一个对象,并附加了此脚本:C# Unity不显示精灵/纹理,c#,unity3d,sprite,texture2d,C#,Unity3d,Sprite,Texture2d,我刚开始使用Unity,但在最基本的操作方面遇到了问题——让图像出现在屏幕上 我已经尝试过对此进行研究,但几乎所有关于Unity的教程/信息都是关于更高级的用法的,没有涵盖基础知识。关于基本图像加载和绘制的信息很少 我的项目有一个对象,并附加了此脚本: public class Boxland_Main : MonoBehaviour { Texture2D test_sprite; void Start () { print ("STUFF");
public class Boxland_Main : MonoBehaviour
{
Texture2D test_sprite;
void Start ()
{
print ("STUFF"); // this works
test_sprite = (Texture2D) Resources.Load ("richard_green.png");
}
void Update ()
{
GUI.DrawTexture (new Rect(0, 0, 50, 50), test_sprite); // this doesn't work
}
}
我的图像文件在参考资料目录中,但我得到的只是一个粉蓝色的屏幕
编辑:
为了清晰起见,我对任何只在屏幕上显示图像的解决方案都感兴趣。我觉得我快要回到XNA或GameMaker了
更新:
以下是我现在得到的(仍然没有绘制精灵):
更新:
我发现,如果我将图像直接从资源窗口拖到Unity UI中的场景窗口上,它会将精灵添加到视图中,精灵会在编译时显示。但是,它渲染模糊和像素化,并且似乎没有任何方法在精灵工作表上指定特定帧
更新:
我在研究过程中遇到了一些材料,这些材料可能指向一个部分答案:
这似乎涵盖了加载图像,但从未解释如何绘制图像。您应该在OnGUI中调用GUI函数,而不是更新() 因此,请尝试将Update()更改为
您没有为资源指定.png。只是名字
test_sprite = (Texture2D) Resources.Load("richard_green", Texture2D);
我从来没有让Unity使用任何技术来绘制任何东西(看起来不模糊和压缩),但我只是尝试了Monogame()并在五分钟内在屏幕上绘制了好看的精灵。Monogame的缺点是缺乏Xbox One的支持,但我现在愿意接受这种情况 看来我的最终结论是: A) Unity仍然不是制作2D游戏的好方法,或者 B) 它和我用过的其他引擎是如此的不同,以至于我无法用大脑去思考它 然而,很明显,很多开发者已经用它制作了很好的游戏(带有图形)。有人真的需要写一个好的,基本的介绍教程,风格是“第一步:开始一个项目,第二步:加载一个图像,第三步:绘制一个图像”
将来某个时候,当我准备第三次尝试Unity时,我可能会回到这篇文章,看看是否有任何新的想法/技术。你尝试过Unity的例子吗?
使用UnityEngine;
公共类示例类:单一行为{
//通过向文件添加.bytes扩展名来加载.jpg或.png文件
//并在imageAsset变量上拖动它。
公共文本资产;
公开作废开始(){
//创建纹理。纹理大小无关紧要,因为
//LoadImage将替换为传入图像大小。
Texture2D tex=新的Texture2D(2,2);
tex.LoadImage(imageAsset.bytes);
GetComponent().material.mainTexture=tex;
} }
“不工作”不是一个很好的描述-它是否表示错误,如果是,是哪一个?请注意,Resources类只能加载位于Resources文件夹中的资源。@LearnCos2D:正如我在最后一行中所述,该文件位于Resources文件夹中。没有错误,只有一个空白的蓝色背景。从“资源”文件夹加载图像是否重要?如果这是你试图在统一中做的最基本的事情,那么你仍然没有思考基本的问题enough@ryanscottmurphy:我在研究过程中收集到的一些示例和提示似乎表明图像文件需要放在该文件夹中,否则它们将无法加载。谢谢!我将尝试此操作并让您知道发生了什么。我添加了这些更改,但对输出没有影响。好的,下一步,尝试将test_sprite公开,并手动将图像拖放到此字段。也许这会有帮助。我公开了Texture2D,但我不确定该去哪里进行拖放。这是Unity的UI编辑器中的某个地方吗?是的,选择游戏对象,它附带了你的脚本。在inspector窗口中,您将看到Boxland_Main和Test_sprite(Texture2D)字段。感谢您的帮助。我从字符串中删除了文件扩展名,但它对输出没有影响。在文件名后包含Texture2D会生成“像变量一样使用类型”错误。
void OnGUI() {
if(test_sprite) {
GUI.DrawTexture (new Rect(0, 0, 50, 50), test_sprite);
}
}
test_sprite = (Texture2D) Resources.Load("richard_green", Texture2D);
using UnityEngine;
public class ExampleClass : MonoBehaviour {
// Load a .jpg or .png file by adding .bytes extensions to the file
// and dragging it on the imageAsset variable.
public TextAsset imageAsset;
public void Start() {
// Create a texture. Texture size does not matter, since
// LoadImage will replace with with incoming image size.
Texture2D tex = new Texture2D(2, 2);
tex.LoadImage(imageAsset.bytes);
GetComponent<Renderer>().material.mainTexture = tex;
} }