- Home /
Displaying Prefab Sprite as Texture on GUI Elements
I am trying to get a list of "weapons" from a folder of prefabs in my project and then display them in a GUI Box to signify a trading system where the sprite is previewed on purchase.
I have managed to read all of the prefabs and my debugs show that they are correctly read and the correct names are listed.
I managed to read them in as such:
DirectoryInfo dir = new DirectoryInfo("Assets/Prefabs/Pickups/Melee");
foreach (FileInfo f in dir.GetFiles("*.prefab"))
{
Debug.Log("Assets/Prefabs/Pickups/Melee/"+f.FullName);
weapons.Add(Resources.Load("Assets/Prefabs/Pickups/Melee/"+f.FullName) as GameObject);
}
This includes the debug that correctly displays the name of each item as it's added into the ArrayList.
I then attempt to pull a Texture from these objects to show them on the GUI as such:
foreach(GameObject wep in weapons)
{
// Convert Sprite to Texture
var sprite = wep.GetComponent<SpriteRenderer>().sprite;
var croppedTexture = new Texture2D( (int)sprite.rect.width, (int)sprite.rect.height );
var pixels = sprite.texture.GetPixels( (int)sprite.textureRect.x,
(int)sprite.textureRect.y,
(int)sprite.textureRect.width,
(int)sprite.textureRect.height );
croppedTexture.SetPixels( pixels );
croppedTexture.Apply();
// Draw Box with Weapon Texture
GUI.Box(new Rect(windowRect.x+20, windowRect.y+(weaponCount*50), 40, 40), croppedTexture);
weaponCount++;
}
I got this snippet from here.
The issue I get is a null reference when I attempt to pull the SpriteRenderer.sprite variable from the object. I'm not sure how this could be going wrong and would appreciate if anyone might know what the issue may be.
Each prefab looks something like this: http://i.imgur.com/vkNrXML.png (none of the variables of the script are yet referenced)
The sprites themselves look something like this: http://i.imgur.com/p6jsn2r.png (they are single sprites because their animation is handled via code)
I seem to be doing something wrong but I'm not quite sure exactly what. Any assistance would be fantastic, thanks.
Your answer
Follow this Question
Related Questions
How to correctly use SpriteRenderer with multiple sprites (if possible) 0 Answers
hide animated Sprite by code (SpriteRenderer) 2 Answers
Sprite Renderer Not Changing Sprite via Script 1 Answer
How to truncate sprite without changing the scale of the sprite? 1 Answer
Gui Box - Texture - Spritesheet 0 Answers