Unity Learning —— 水果忍者界面UI

来源:互联网 发布:深圳存爱网络股份公司 编辑:程序博客网 时间:2024/04/30 14:30

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、

原创粉丝点击