做了两天unityUI的心得(纯新手向)

Unity 3D UGUI 游戏界面 Canvas组件 Canvas组件是UI的基础画布,所有UI元素都必须放在Canvas组件下面,并且它支持嵌套。 Canvas支持3种绘制方式,Overlay(最上层) Camera 和 World Space(3D布局),其中用的最多的是Camera,它可以把正交摄像机投影出来的UI元素绘制在Canvas面板上。 //--自适应屏幕 自适应屏幕需要画布,Canvas的同级需要绑定Canvas Sc... 阅读详情

最近因为年度项目的原因需要我简单做下UI,菜鸟小白总结下经验。

一、总体结构为两个canvas,两个canvas始终放置在摄像机上。第一个canvas左上角有时间条(因为项目是跑酷游戏,所以设计成和血条类似的时间条),左上角还有游戏时间和剩余时间。canvas右上角还有个暂停按钮,当点击暂停按钮时,游戏暂停同时第一个canvas消失、第二个canvas出现。第二个canvas由中央两幅image和右上角三个按钮组成。三个按钮分别为继续、重新开始和结束游戏。当点击继续时回到游戏。

二、第一个canvas的制作:在层级试图中新建canvas,将canvas检视视图中的render mode设置为screen space-camera在这个渲染模式下,canvas会固定在屏幕上跟随屏幕移动。在层级视图中新建canvas的子部件slider和button和两个text。将slider的background和handle slider area禁用或者删除。在slider层级视图的fill area中的fill中设置时间条的颜色,在slider的检视视图中将slider的值设置为25。text和button的属性自由设置。

三、第二个canvas将button位置调整,button上的文本调整。也要注意将第二个canvas的render mode调整为screen space-camera。

四、设置第一个canvas的脚本。

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

public class UiControler : MonoBehaviour {
    [SerializeField]
    Canvas firstcanvas;
    [SerializeField]
    Text timetext;
    [SerializeField]
    Canvas secondcanvas;
    [SerializeField]
    Slider slider;
    [SerializeField]
    Text leftime;
    
	// Use this for initialization
	void Start () {
        firstcanvas.gameObject.SetActive(true);
        secondcanvas.gameObject.SetActive(false);
	}
	
	// Update is called once per frame
	void Update () {
        timetext.text = "游戏时间:" + Time.timeSinceLevelLoad;
        if(slider.value>0)
        {
            slider.value -= Time.deltaTime * 1f;
        }
        if(slider.value<=10f)
        {
            leftime.fontSize = 25;
            leftime.color = Color.red;
        }
        leftime.text = slider.value.ToString();

        if (Input.GetKeyDown(KeyCode.Escape))
        {
            Paused();
        }
        
	}
    public void Paused()
    {
        firstcanvas.gameObject.SetActive(false);
        secondcanvas.gameObject.SetActive(true);
        Time.timeScale = 0f;
    }
}

五、在层级视图中新建一个空gameobject,将刚才的脚本挂在空gameobject上。选择第一个canvas、第二个canvas、slider、text等挂在新gameobject的属性上。现在还需设置暂停button的点击事件。找到暂停button的检视视图,在最下边on click()事件中点击+新建点击事件,将gameobject挂上去,选择pause()函数。这样这个button的点击事件就完成了,第一个canvas也算完成。可以进入游戏测试一下。

六、接下来完成第二个canvas的部分,由于第二个canvas主要是button,并不美观,所以我在canvas中间附加两张图片。

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

public class UiDemender : MonoBehaviour {
    [SerializeField]
    Canvas firstcanvas;
    [SerializeField]
    Canvas secondcanvas;

    
	// Use this for initialization
	void Start () {
        
	}
	
	// Update is called once per frame
	void Update () {
		
	}
    public void UnPause()
    {
        secondcanvas.gameObject.SetActive(false);
        firstcanvas.gameObject.SetActive(true);
        Time.timeScale = 1f;
    }
    public void QuitGame()
    {
        Application.Quit();
    }
    public void Restart()
    {
        Application.LoadLevel(0);
    }

}

然后重复上一步给button添加点击事件的步骤。在canvas中新建两个空image,将图片导入素材库中,需要注意的是,要将导入的图片在检视视图中修改texture type属性,选择sprite(2D and UI),这样就可以将图片挂到image上了。

七、到这里一个丑到爆炸但是勉强应付的UI就暂时完成了。

UnityUI之锚点 锚点是UGUI中用于定位和约束控件的重要属性。它决定了控件如何随着父容器的大小变化而变化,以及如何响应屏幕尺寸的变化。 阅读详情

相关推荐

Unity:UnityUI界面设计与交互教程

自定义UI控件是UnityUI界面设计中的高级技巧,允许开发者创建符合特定需求的用户界面元素。Unity提供了UGUI系统,通过继承或类,可以创建自定义的UI控件。继承Graphic类:创建一个自定义UI控件,首先需要继承Graphic类,这样可以利用Unity的渲染系统。重写方法:此方法用于定义控件的网格和纹理坐标,是自定义外观的关键。实现交互逻辑:通过继承Selectable类,可以添加交互逻辑,如响应鼠标点击、悬停等事件。

kkchenjj的博客 3042

unity3d 中场景不显示了

应该是把Layers下面的Nothing打开了。

moonlightpeng的博客 3305

Unity 界面设计

在实时 3D 项目中,UI 通常是文本、按钮、复选框、滑块和切换开关的组合。这些元素可以使用规则或通知与用户进行通信。UI 还可以帮助用户执行任务,例如保存进度或调整设置。

m0_66358314的博客 2万+

Unity UI设计 软件构造实验报告

(1)熟悉Unity中UI界面的设计与编写;(2)熟悉UI界面中场景转换,UI与场景内容相互关联的方式。(3)熟悉Unity中MySQL数据库的操作新建一个Unity场景,在此场景中实现如下功能:(1)自行设计一个登录、注册UI界面;(2)添加数据库的动态链接库文件,提前设计数据库表格(自行设计);(3)连接数据库,实现增、删、改、查等数据库对用户的操作;(4)UI界面中包括canvas、Image、RawImage、Button等多种UI元素;

wxh的博客 4004

【汽车ECU标定技术解析】DCM文件与A2L、HEX的协同工作机制

本文深入解析了汽车ECU标定中DCM、A2L与HEX三大核心文件的协同工作机制。A2L文件作为定义标定变量地址与规则的“图纸”,DCM文件承载工程师调试后的具体标定数据,最终通过A2L的地址映射,将DCM数据固化生成可刷入ECU的HEX文件,形成完整的标定数据流转闭环。

weixin_29214559的博客 436

MATLAB PDE工具箱电磁场仿真平行电容板及电偶极子详解

首先打开matlab,在命令行输入pdetool打开PDE工具箱 工具箱的功能我就不赘述了,大概就是以有限元的数值计算方法,计算二阶偏微分方程,因此可以解决电磁场、热力学等问题。 首先点击左上角按钮,画三个矩形 画完一个后可以双击矩形编辑,参数如下: 其中R1表示上极板,R2表示下极板,R3表示整个空间区域。 在上方Set formula为R3-R2-R1,表示求解区域是整个空间区域减去两个极板。下拉框选择Electrostatics表示求解的是静电场问题。 接下来点击上方菜单栏中的这个按钮,表

weixin_42845306的博客 1万+

Unity_UGUI翻译(2) Basic Layout(基本布局)

Basic Layout(基本布局) In this section we’ll look at how you can position UI elements relative to the Canvas and each other. If you want to test yourself while reading, you can create an Image using t...

weixin_34015566的博客 371

蓝牙Mesh安全机制全解析:如何防止你的智能门锁被黑客控制?

本文深入解析蓝牙Mesh安全机制,重点探讨如何保护智能门锁免受黑客攻击。详细介绍了蓝牙Mesh的多层次安全架构,包括密钥管理体系、设备入网流程及实战防护策略,帮助用户构建更安全的智能家居网络。

h3i4j的博客 729

【免费下载】 UnityUI日期选择器工具 - DatePicker for UnityUI

本仓库提供了一个适用于UnityUI的日期选择器工具,名为“DatePicker for UnityUI”。该工具旨在帮助Unity开发者在其项目中轻松实现日期选择功能,提升用户体验。 ## 功能特点 - **易于集成**:只需将资源文件导入到您的Unity项目中,即可快速集成日期选择器。 - **用户友好**:直观的用户界面设计,方便用户选择日期。 - **高度可定制**:支持自定义日期格式...

gitblog_09754的博客 834

TCP协议中ARQ自动重传的三种实现方式对比(含SACK详解)

本文深入解析TCP协议中ARQ自动重传的三种实现方式,包括停止-等待、回退N步和选择重传协议,特别详细介绍了SACK机制的工作原理和优势。通过对比分析各协议的效率、复杂度和适用场景,为网络通信中的可靠性传输提供了实用的选型指南。

weixin_30776273的博客 462

水文模型大合集---SWAT模型、VIC模型、HEC-HMS模型、HSPF模型、FVCOM模型、Delft3D模型、HYPE模型.......

1.1 面源污染概要1.2 SWAT模型及应用1.3 SWAT模型原理1.4 SWAT模型输入文件1.5 ArcGIS与SWAT关系。

jwwkyjspt的博客 4359

[UnityUI]UGUI新手引导

1.假如ImageA在ImageB前面,且ImageA完全覆盖ImageB,点击两者的重叠部分,ImageA会收到点击事件,而ImageB不会

宏哥的博客 1万+

计算机三级考试嵌入式系统重点精简汇总

第一章 嵌入式系统概论 1.1.1嵌入式系统 (1)特点:(1)专用性;(2)隐蔽性;(3)资源受限;(4)高可靠性;(5)实时性;(6)软件固化。 (2)应用:(1)冰箱、洗衣机、电饭煲、空调、摄影机、DVD播放器等;(2)数控机床、飞机、汽车、电梯、X光机、血压计等;(3)电话机、传真机、打印机、pos机、GPS导航仪、路由器等。 1.1.2嵌入式系统组成与分类 (1)逻辑组成:硬件和软件,分为处理器、存储器、I|0设备与I|O接口,数据总线; (2)处理器:分为主处理器(CPU)和协处

chemkrik的博客 1万+

Tilia.UnityUI 教程:VR中的Unity UI集成指南

Tilia.UnityUI 教程:VR中的Unity UI集成指南 1. 项目介绍 Tilia.UnityUI 是一个专为 VRTK 4 设计的Unity包,旨在提供对Unity UI的强大支持。此项目源自VRTK 3.3.0并进行了额外的修复工作,确保了兼容性既包括旧版也涵盖新版输入模块。它依赖于VRTK框架下的Tilia相关组件,采用了MIT许可证进行分发。通过本项目,开发者可以轻松地在虚拟现...

gitblog_01087的博客 640

HyperLynx实战:手把手教你搞定DDR4信号完整性仿真(附ODT与终端电阻配置避坑)

本文详细介绍了使用HyperLynx进行DDR4信号完整性仿真的实战技巧,重点解析了ODT配置与终端电阻优化的黄金法则。通过模型准备、拓扑构建、ODT扫描等关键步骤,帮助硬件工程师规避常见设计陷阱,提升高速数字电路设计的效率与可靠性。

weixin_30861797的博客 639

YOLOv12改进策略【Neck】| 使用CARAFE轻量级通用上采样算子

CARAFE内容感知的特征重新组合。

Limiiiing的博客 664

UnityUI 日期选择器资源文件

UnityUI 日期选择器资源文件 【下载地址】UnityUI日期选择器资源文件 UnityUI 日期选择器资源文件 项目地址: https://gitcode.com/open-source-toolkit/ca26f ...

gitblog_09750的博客 400

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

提升Unity项目用户体验的利器:DatePicker for UnityUI

提升Unity项目用户体验的利器:DatePicker for UnityUI 【下载地址】UnityUI日期选择器工具-DatePickerforUnityUI 本仓库提供了一个适用于UnityUI的日期选择器工具,名为“DatePicker for UnityUI”。该工具旨在帮助Unity开发者在其项目中轻松实现日...

gitblog_09707的博客 425

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

unityUi系统

UI系统3D游戏设计第九次作业前言说明IMGUI实现实现过程效果展示生成预制体UGUI实现实现过程效果展示生成预制体IMGUI与UGUI的比较IMGUIUGUI预制的使用感悟与总结项目仓库 3D游戏设计第九次作业 前言 这是中山大学2020年3D游戏设计的第九次作业,如有错误,请指正,感谢您的阅读。 说明 本次作业为:血条(Health Bar)的预制设计。具体要求如下 分别使用 IMGUI 和 UGUI 实现 使用 UGUI,血条是游戏对象的一个子元素,任何时候需要面对主摄像机 分析两种实现的优缺点

qq_43283265的博客 792

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【亲测免费】 Unity日期选择插件 DatePicker for UnityUI

Unity日期选择插件 DatePicker for UnityUI 【下载地址】Unity日期选择插件DatePickerforUnityUI 本仓库提供了一个用于Unity的日期选择插件,名为“DatePicker for UnityUI”。该插件旨在帮助Unity开发者在其项目中轻松实现日期选择功能。插件设计简洁,...

gitblog_09808的博客 1500

UnityUI系统 - GUI

region 知识点一 全局颜色//全局的着色颜色 影响背景和文本//按钮是偏红,字体全红//文本着色颜色 会和全局颜色相乘//背景元素着色 会和全局颜色相乘GUI.Button(new Rect(0, 0, 100, 30), "测试按钮");GUI.Label(new Rect(0, 50, 100, 30), "测试按钮");//style 自定义后也会被全局改变,改回白色可以变回去。

m0_61939767的博客 1777

UnityUI框架-从零开始的学习记录

今天闲了下来,把之前项目自己用过的UI部分进行了功能整理、修改,打算一点完善成一个UI框架。 UI框架 首先得了解,什么是UI框架,UI框架需要包含什么功能,因为我入行不久,在这里仅发布个人看法,UI框架是管理整个项目内UI的管理者,主要负责UI的加载、缓存、展示、隐藏等,一套完整的UI框架主要包括但不限于这4个功能,还会根据需求添加新功能,我自己写的还包括了: 获取UIPanel字典内包含的GameObject/获取UI栈顶的GameObject, 切换场景后根据历史记录重载UIPanel, 销毁目标UI

Yxwx的博客 435

UnityUI实现最基础常用的小地图(附带小地图代码)

本篇介绍的制作小地图的方法,本质上是把Camera摄像机上渲染的场景映射到一个image图片的texture材质上,方法非常的简单,跟着步骤做就没有问题~ 1. 首先创建一个Camera,调整位置为俯视,然后移除上面的Audio Listener组件 2. 在资源文件夹下创建RenderTexture,起名为Map,把它拖拽给新创建的Camera上的TargetTexture,这时候图片材质就会显示Camera渲染的场景 3.再用UGUI创建一个Raw Ima...

wanghexuan的博客 2734

UnityUI优化

摘要:本文分析了Unity UI性能优化的关键点。主要涉及Canvas.SendWillRenderCanvases(UI元素更新耗时)、Canvas.BuildBatch(网格合并耗时)、CanvasRenderer.SyncTransform(变换同步耗时)和EventSystem.Update(事件处理耗时)等核心函数的优化方案。优化建议包括:动静分离、降低网格复杂度、合理设计Canvas层级结构、使用图集、控制UI元素更新频率等。特别强调要注意UI合批条件,避免层级穿插导致的合批失败,可通过Fram

随便写点什么 734

UnityUI

(1)每一个ui都放在一个panel里面,panel当中要加入CanvesGroup组件以便控制其子物件与ui的交互(2)BasePanel为所有自定义Panel的父类,每一个自定义的Panel要继承BasePanel并实现抽象方法。

asjdaslk的博客 527
下一篇: webstorm2018.2闪退问题
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值