Search code examples
unityscriptunity-game-engine

How to get/change Image Source name with code in Unity?


we made a script and need to get the image name, we implement this task with a clumsy way below, but we still want to know whether there is a way to get the image name directly?

enter image description here

public class CubeManager
{
    static public Dictionary<CubeType, string> cubeTypeDict = new Dictionary<CubeType, string>();
    static private Dictionary<string, GameObject> cubeDict = new Dictionary<string, GameObject>();
    static CubeManager()
    {
        cubeTypeDict.Add(CubeType.Wall01, "Wall01");
        cubeTypeDict.Add(CubeType.Wall02, "Wall02");
        cubeTypeDict.Add(CubeType.Wall03, "Wall03");
        cubeTypeDict.Add(CubeType.Wall04, "Wall04");
        cubeTypeDict.Add(CubeType.Wall05, "Wall05");
        cubeTypeDict.Add(CubeType.Wall06, "Wall06");
        cubeTypeDict.Add(CubeType.Wall07, "Wall07");
        cubeTypeDict.Add(CubeType.Wall08, "Wall08");
        cubeTypeDict.Add(CubeType.Wall09, "Wall09");
        cubeTypeDict.Add(CubeType.Wall10, "Wall10");
        cubeTypeDict.Add(CubeType.Wall11, "Wall11");
        cubeTypeDict.Add(CubeType.Wall12, "Wall12");
        cubeTypeDict.Add(CubeType.Wall13, "Wall13");
        cubeTypeDict.Add(CubeType.Wall14, "Wall14");
        cubeTypeDict.Add(CubeType.Wall15, "Wall15");
        cubeTypeDict.Add(CubeType.Wall16, "Wall16");
        cubeTypeDict.Add(CubeType.Wall17, "Wall17");
        cubeTypeDict.Add(CubeType.Wall18, "Wall18");
        cubeTypeDict.Add(CubeType.Wall19, "Wall19");
        cubeTypeDict.Add(CubeType.Wall20, "Wall20");
        cubeTypeDict.Add(CubeType.Wall21, "Wall21");
        cubeTypeDict.Add(CubeType.Wall22, "Wall22");
        cubeTypeDict.Add(CubeType.Wall23, "Wall23");
        cubeTypeDict.Add(CubeType.Wall24, "Wall24");
        cubeTypeDict.Add(CubeType.Wall25, "Wall25");
        cubeTypeDict.Add(CubeType.Wall26, "Wall26");
        cubeTypeDict.Add(CubeType.Wall27, "Wall27");
        cubeTypeDict.Add(CubeType.Wall28, "Wall28");
        cubeTypeDict.Add(CubeType.Wall29, "Wall29");
    }

Solution

  • Yes, you can by,

    Image img;
    
    Debug.Log("Image Name: " + img.sprite.name);
    

    Additionally you can change sprite as well by giving Texture2D

    img.sprite = Sprite.Create (spr.texture, img.sprite.rect, new Vector2 (0.5f, 0.5f));
    

    Here spr is a Sprite, you can use Texture2D directly.