Unity如何更改在类选择上显示的精灵

我有一个班级选择screen。它运行得非常好,我有一个开始游戏按钮,可以保存您选择的统计数据。

但是我如何在该类的类选择屏幕上放置一个精灵(可能一开始只能使用3-4个老动物精灵来使其工作,然后绘制它们),然后在游戏中绘制该精灵所在的狼( image

类别选择gui代码:

using UnityEngine;
using UnityEngine.SceneManagement;

public class DisplayerCreatePlayerFunctions
{
    private int classSelection;
    private string[] classSelectionNames = new string[] { "Warrior","Mage","Archer","Priest","Rogue","Engineer"};


    public void DisplayClassSelections()
    {
        classSelection = GUI.SelectionGrid(new Rect(50,50,450,115),classSelection,classSelectionNames,6);
        GUI.Label(new Rect(710,300,300),FindClassDescription(classSelection));
        GUI.Label(new Rect(710,100,FindClassStatvalues(classSelection));
        GUI.Label(new Rect(710,200,FindClasspassive(classSelection));
//GUI.Label(new Rect(710,FindClasssprite(classSelection));

    }

    private string FindClassDescription(int classSelection)
    {
        if(classSelection == 0)
        {
            BaseCharacterClass tempClass = new BaseWarriorClass();
            return tempClass.CharacterClassDescription;
        }else if(classSelection == 1)
        {
            BaseCharacterClass tempClass = new BaseMageclass();
            return tempClass.CharacterClassDescription;
        }else if (classSelection == 2)
        {
            BaseCharacterClass tempClass = new BaseArcherClass();
            return tempClass.CharacterClassDescription;
        }else if (classSelection == 3)
        {
            BaseCharacterClass tempClass = new BasePriestClass();
            return tempClass.CharacterClassDescription;
        }else if (classSelection == 4)
        {
            BaseCharacterClass tempClass = new BaseRogueclass();
            return tempClass.CharacterClassDescription;
        }else if (classSelection == 5)
        {
            BaseCharacterClass tempClass = new BaseEngineerClass();
            return tempClass.CharacterClassDescription;
        }

        return "NO CLASS FOUND";

    }

    private string FindClassStatvalues(int classSelection)
    {
        if (classSelection == 0)
        {
            BaseCharacterClass tempClass = new BaseWarriorClass();
            string tempStats = "Hp: " + tempClass.HitPoints + "\n" + "Mp: " + tempClass.ManaPoints + "\n" + "Int: " + tempClass.Intellect + "\n" + "Str: " + tempClass.Strength;
            return tempStats;

        }
        if (classSelection == 1)
        {
            BaseCharacterClass tempClass = new BaseMageclass();
            string tempStats = "Hp: " + tempClass.HitPoints + "\n" + "Mp: " + tempClass.ManaPoints + "\n" + "Int: " + tempClass.Intellect + "\n" + "Str: " + tempClass.Strength;
            return tempStats;

        }
        if (classSelection == 2)
        {
            BaseCharacterClass tempClass = new BaseArcherClass();
            string tempStats = "Hp: " + tempClass.HitPoints + "\n" + "Mp: " + tempClass.ManaPoints + "\n" + "Int: " + tempClass.Intellect + "\n" + "Str: " + tempClass.Strength;
            return tempStats;

        }
        if (classSelection == 3)
        {
            BaseCharacterClass tempClass = new BasePriestClass();
            string tempStats = "Hp: " + tempClass.HitPoints + "\n" + "Mp: " + tempClass.ManaPoints + "\n" + "Int: " + tempClass.Intellect + "\n" + "Str: " + tempClass.Strength;
            return tempStats;

        }
        if (classSelection == 4)
        {
            BaseCharacterClass tempClass = new BaseRogueclass();
            string tempStats = "Hp: " + tempClass.HitPoints + "\n" + "Mp: " + tempClass.ManaPoints + "\n" + "Int: " + tempClass.Intellect + "\n" + "Str: " + tempClass.Strength;
            return tempStats;

        }
        if (classSelection == 5)
        {
            BaseCharacterClass tempClass = new BaseEngineerClass();
            string tempStats = "Hp: " + tempClass.HitPoints + "\n" + "Mp: " + tempClass.ManaPoints + "\n" + "Int: " + tempClass.Intellect + "\n" + "Str: " + tempClass.Strength;
            return tempStats;

        }
        return "NO STATS FOUND";
    }

    private string FindClasspassive(int classSelection)
    {
        if (classSelection == 0)
        {
            BaseCharacterClass tempClass = new BaseWarriorClass();

            return tempClass.CharacterClasspassive;

        }
        if (classSelection == 1)
        {
            BaseCharacterClass tempClass = new BaseMageclass();

            return tempClass.CharacterClasspassive;

        }
        if (classSelection == 2)
        {
            BaseCharacterClass tempClass = new BaseArcherClass();

            return tempClass.CharacterClasspassive;

        }
        if (classSelection == 3)
        {
            BaseCharacterClass tempClass = new BasePriestClass();

            return tempClass.CharacterClasspassive;

        }
        if (classSelection == 4)
        {
            BaseCharacterClass tempClass = new BaseRogueclass();

            return tempClass.CharacterClasspassive;

        }
        if (classSelection == 5)
        {
            BaseCharacterClass tempClass = new BaseEngineerClass();

            return tempClass.CharacterClasspassive;

        }

        return "NO PASSIVE FOUND";
    }



    public void playGame()
    {
        SceneManager.LoadScene(SceneManager.GetactiveScene().buildIndex + 1);

    }

    public void DisplayMainItems()
    {
        GUI.Label(new Rect(Screen.width / 2,20,250,100),"CREATE NEW PLAYER");
        if(GUI.Button(new Rect(570,470,50),"Start Game"))
        {
            playGame();

        }

    }

}

我希望在类选择中更改所显示的精灵 但是目前我还不熟悉这个,所以我不确定如何实现。它显示了我的No sprite found else语句,但是当我尝试添加代码以在gui中显示图像时,它显示了空白。类似于将currentPlayerSprite变量绑定到某个位置(我在注释掉的函数中有该位置),然后在switch语句中更改在currentPlayerSprite中存储的精灵。

j5210 回答:Unity如何更改在类选择上显示的精灵

我将此用作函数,然后将其添加到我的guis列表中


GUI.Label(new Rect(710,50,300,300),FindClassDescription(classSelection));
GUI.Label(new Rect(710,100,FindClassStatValues(classSelection));
GUI.Label(new Rect(710,200,FindClassPassive(classSelection));
GUI.DrawTexture(new Rect(650,210,FindClassSprite(classSelection));




private Texture2D FindClassSprite(int classSelection)
    {
        mageSprite = Resources.Load<Texture2D>("wolf");
        warriorSprite = Resources.Load<Texture2D>("lizard");


        if (classSelection == 0)
        {
            GUI.DrawTexture(new Rect(650,mageSprite);

        }
        if (classSelection == 1)
        {
            GUI.DrawTexture(new Rect(650,warriorSprite);

        }
        if (classSelection == 2)
        {


        }
        if (classSelection == 3)
        {


        }
        if (classSelection == 4)
        {


        }
        if (classSelection == 5)
        {


        }


        return Resources.Load<Texture2D>(" ");
    }

工作得非常好。终于找到了一种很好的简单方法,可以在类选择gui中添加更改显示图像的方法。我认为Sprite渲染可以工作,但是我尝试了很多,但没有运气。

本文链接:https://www.f2er.com/3127250.html

大家都在问