CutFruitDemo
期望结果
解决方案
Canvas(画布)——画布:就是用来绘画的地方,在做图软件中,画布就是位于图层最下方的那一层。
所以UI界面建立的所有内容都是建立在一个画布(Canvas) 上的,命名UIStart
画布渲染模式(Render Mode)为随相机、渲染相机设为主相机
画布规模(Canvas Scaler),设为随屏幕分辨率,默认1280*720(手机5.0屏幕分辨率),匹配方式(Match Mode)横屏游戏为widthimgBG(背景图片):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、