Unity关于选关界面的制作

选关界面,就像这样:

在这里插入图片描述

1、在Canvas中创建一个选关界面,同时添加Grid Layout Group组件;
锚点我一般设置为全屏,Image代表每个关卡按钮
通过调节组件中的属性可以管理子物体的大小与间距(这里指关卡按钮)
在这里插入图片描述
创建关卡按钮在Content下;
在这里插入图片描述
2、创建LevelItem脚本,挂载到每个Button上;
添加引用:
在这里插入图片描述
代码:

public class LevelItem : MonoBehaviour
{
    /// <summary>
    /// 关卡ID
    /// </summary>
    private int LevelId;
    /// <summary>
    /// 创建按钮
    /// </summary>
    private Button btn;

    // Start is called before the first frame update
    void Awake()
    {
        btn = GetComponent<Button>();
        btn.onClick.AddListener(OnClick);
    }

    // Update is called once per frame
    void Update()
    {

    }
    /// <summary>
    /// 初始化
    /// </summary>
    /// <param name="id">关卡ID</param>
    /// <param name="isLock">是否锁住关卡</param>
    public void Init(int id, bool isLock)
    {
        LevelId = id;
        if (isLock)
        {
            btn.interactable = false;
        }
        else
        {
            btn.interactable = true;
        }
    }

    /// <summary>
    /// 点击监听
    /// </summary>
    private void OnClick()
    {
        //场景加载,进入关卡
        //确保BuildSetting中的场景编号没有问题
        SceneManager.LoadScene(LevelId);
    }
}

3、创建LevelManager脚本,挂载到Content上;
添加引用:
在这里插入图片描述
代码:

public class LevelManager : MonoBehaviour
{

    void Start()
    {
        LoadLevel();
    }
    
    private void LoadLevel()
    {
        //上次退出游戏时保存的游戏关卡ID,如果第一次进入默认为1
        int levelId = PlayerPrefs.GetInt("level", 1);
        //向所有子物体上的LevelItem脚本中的Init方法传值
        for (int i = 0; i < transform.childCount; i++)
        {
            if (i + 1 > levelId)
            {
                //没通关的关卡
                transform.GetChild(i).GetComponent<LevelItem>().Init(i + 1, true);
            }
            else
            { 
                //通关的关卡
                transform.GetChild(i).GetComponent<LevelItem>().Init(i + 1, false);
            }
        }
    }
}

4、运行Unity。

如果你想要的选关是这样的:
在这里插入图片描述

那就在每个按钮下创建三个Image,根据获取到的星星个数gameobject.SetActive(true)相应的图片就好了。
(还需要一个新的 PlayerPrefs,比如:PlayerPrefs.GetInt(“Star”, 0);)

有更好的方法欢迎指点。

  • 5
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity是一款强大的游戏开发引擎,对于初学者来说,制作界面是一个很好的练习项目。首先,你需要先了解Unity的基本操作和界面布局。在学习过程中,推荐去官方网站或者YouTube上寻找相关的视频教程,这样可以更直观地了解Unity的工作流程和操作方法。 在制作界面的过程中,你可以在Unity的场景视图中对界面进行布局和设计。使用Unity提供的UI系统,你可以选择各种按钮、文本框、图片等控件,然后通过拖拽和调整的方式进行界面的布局和设计。 接着,你可以利用Unity的脚本系统给界面添加交互功能。通过编写简单的脚本,你可以实现按钮的点击事件、文本的内容更新等功能。这样就可以让你的界面更加生动和具有交互性。 当你完成了界面的设计和基本交互功能后,你可以进一步学习如何进行界面的优化和美化。比如调整UI元素的大小和位置,选择合适的颜色和字体,添加过渡效果等,来提升界面的用户体验。 最后,不要忘记在学习过程中遇到问题时,多查阅文档和求助社区。Unity拥有庞大的社区和丰富的文档资源,可以帮助你解决很多问题并且加速学习的过程。 总的来说,制作界面是一个很好的Unity初学者练习项目,通过这个过程你可以熟悉Unity的操作方法和工作流程,掌握一些基本的UI设计和交互编程技能。希望以上建议对你有所帮助,祝你学习顺利!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值