Unity Learning —— 水果忍者界面UI

CutFruitDemo

期望结果

这里写图片描述

解决方案

  • Canvas(画布)——画布:就是用来绘画的地方,在做图软件中,画布就是位于图层最下方的那一层。
    所以UI界面建立的所有内容都是建立在一个画布(Canvas) 上的,命名UIStart
    画布渲染模式(Render Mode)为随相机、渲染相机设为主相机
    画布规模(Canvas Scaler),设为随屏幕分辨率,默认1280*720(手机5.0屏幕分辨率),匹配方式(Match Mode)横屏游戏为width

  • imgBG(背景图片):Rect transform(位置大小相关的组件);Source Image;imgLogo类似

  • btnPlay(运行按钮):去掉自带text,位置,原图;btnSound类似

  • 脚本组件:点击事件处理(UIStart——Script)

以点击Play按钮切换到play场景视图为例

using System.Collections;
using System.Collections.Generic;
//引用所需的命名空间
using UnityEngine.UI;
using UnityEngine.SceneManagement;

//获取按钮点击事件,调用事件处理函数
public class UIStart : MonoBehaviour {
    private Button btnPlay;
    void Start( ) {
        GetComponents( );
        btnPlay.onClick.AddListener(onPlayClick);
    }

    void OnDestroy()
    {
        btnPlay.onClick.RemoveListener(onPlayClick);
    } 

    private void GetComponents( )
    {
        btnPlay = transform.Find("btnPlay").GetComponent<Button>( );
    }

    void onPlayClick( )
    {
        SceneManager.LoadScene("play", LoadSceneMode.Single);
    }

点击声音按钮,开启关闭声音,切换图标

基本思路:获取组件、注册事件、调用事件处理函数(借用委托(函数指针))

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class UIStart : MonoBehaviour {
    //私有属性(变量)用来保存太长的的类对象的属性和方法的引用(我的理解)
    private Button btnPlay;

    private Button btnSound;

    private AudioSource audiosourceBG;

    private Image imgSound;

    //公有属性————组件
    public Sprite[] soundSprites;

    void Start () {
        //获取相应的组件
        getComponents();

        //注册事件并调用事件处理函数
        btnPlay.onClick.AddListener(onPlayClick);

        btnSound.onClick.AddListener(onSoundClick);
    }

    private void getComponents()
    {
        btnPlay = transform.Find("btnPlay").GetComponent<Button>();

        btnSound = transform.Find("btnSound").GetComponent<Button>();

        audiosourceBG = transform.Find("btnSound").GetComponent<AudioSource>();

        imgSound = transform.Find("btnSound").GetComponent<Image>();
    }

    //定义Play按钮点击事件处理函数
    void onPlayClick()
    {
        SceneManager.LoadScene("play", LoadSceneMode.Single);
    }

    void onSoundClick()
    {

        if (audiosourceBG.isPlaying)
        {
            audiosourceBG.Pause();
            imgSound.sprite = soundSprites[1];
        } else {
            audiosourceBG.Play();
            imgSound.sprite = soundSprites[0];
        }
    }
}

Notes

1、自己的图片如何加入到Canvas中的image?

需要将图片拖进asset文件夹,设置图片格式,然后拖动到image即可

这里写图片描述

2、CutFruitDemo

建立开始界面UI资源;
横屏游戏,设置16:10

fixed resolution 固定分辨率
aspect ratio 长宽比

canvas
Canvas Scaler(Script)

UI Scale Mode(UI 缩放模式)
Constant Pixel Size(恒定像素大小)

变换工具:Q(手形)W(移动)E(旋转)R(缩放)T(矩形)

set Native Size 设置图片为原始像素大小


渲染是什么意思 什么是渲染?
简单来说就是三维场景=>图片的过程

渲染(Render)在电脑绘图中,是指:用软件从模型生成图像的过程。模型是用严格定义的语言或者数据结构对于三维物体的描述,它包括几何、视点、纹理以及照明信息。图像是数字图像或者位图图像。

三维计算机图形的预渲染或者实时渲染的速度都非常慢。预渲染的计算强度很大,通常是用于电影制作;实时渲染经常用于三维视频游戏,通常依靠带有三维硬件加速器的图形卡完成这个过程。

这里写图片描述

这里写图片描述

这里写图片描述

3、unity中sprite(精灵)是图片精灵的意思?

图片精灵是用来绘制图集的控件,精灵可以在一张大图中去截取一部分(大图就是整体图像集合(Atlas),而截取的小图就是一个精灵),然后给精灵命名,使用时通过精灵的名称就能直接绘制,并且精灵还可以用来制作动画。

图片精灵的意思(Flash引擎里也有图片精灵对象),将导入的图片类型设置为Sprite即可拖到场景面板里,带有随屏幕大小自动缩放功能,还可以加Collider进行射线检测,简单实用。

4、transform.Find(“btnPlay”).GetComponent();

C#中.点 表示成员运算符,
用于——对象.成员
由于transform.Find(“btnPlay”)返回了一个参数,
所以再用.GetComponent(),表示这个返回参数的GetComponent()属性

5、C#中的消息处理机制

编写过Windows桌面应用程序的人都知道,微软的Windows操作系统与应用程序之间的通信绝大部分是基于消息循环机制的。

当你将开发平台转向C#的时候,由于C#对消息进行了面向对象的封装,消息被封装成了事件

委托类型可以理解成在C++中的函数指针,但不同的是,委托是完全面向对象的,同时封装了对象的实例和方法。本质上,委托把一个实例和该实例上的方法函数封装成一个可调用的实体,它是面向对象的、安全的

6、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值