UI设计又称界面设计,是指对软件的人机交互、操作逻辑、界面美观的整体设计,UI就相当于人可以看到的界面,并且可以对UI进行交互。
Unity 3D的UI,分为UGUI和GUI,UGUI主要是图形渲染界面,搭建方便,学习比较容易,GUI主要是代码渲染界面,需要在编写代码时就思考如何完善界面布局,在运行项目时才能看到效果
所有的UI组件都在画布的子集里,画布相当于所有UI组件的容器,每当创建一个UI物体时,Canvas都会自动创建,所有的UI元素都必须是Canvas的子物体,和Canvas一同创建的还有一个EventSystem,它是一个基于Input的事件系统,可以对键盘 触摸 鼠标自定义输入进行处理
Canvas:控制UI的渲染模式
Render Mode:渲染模式
Screen Space overlay:让UI始终位于界面最前面
Screen Space camera:赋值一个相机 按照相机的距离前后显示UI和物体
World Space:让画布变成一个3D物体 可以进行移动旋转等等
Canvas Scaler:控制UI画布的缩放比例
Constant Pixel Size:固定像素大小 无论屏幕尺寸如何变化,UI都不会变化
Scale With Screen Size:根据屏幕分辨率,自动调节UI比例
Constant Physical Size:固定物理像素大小
Graphic Raycaster:控制是否让UI响应射线点击
Ignore Reversed Graphic:忽略反转的UI UI反转后点击无效
Blocking Objects:阻挡点击物体 当UI前有物体时 点击前面的物体射线会被阻挡
Blocking Mask:阻挡层级 当UI前有设置的层级时 点击前面的物体射线会被阻挡
Text组件是UGUI中最常用的组件,它的作用是对文本数据进行处理并显示
Font:显示文字的字体
Line Spacing:行与行之间的垂直距离
Rich Text:富文本格式 勾选后可以显示文本中的标记标签信息
UGUI创建的所有组件都会默认勾选。
Image组件是UGUI中比较常用的组件,用来控制和显示图片
Source Image:需要显示的图片的来源
Color:图片的颜色
Material:渲染图像的材质
Raycast Target:能否接收到射线检测
Image Type:图片的排列方式
Button是一个按钮组件,在开发中经常使用,通过单击按钮执行某些事件、动作、切换状态等
Interactable:是否启动按钮 取消勾选则按钮失效
Transition:按钮状态过渡的类型
Navigation:导航
On Click:按钮单击事件的列表 设置单击后执行哪些函数
Button组件可以通过On Click手动添加监听事件,也可以通过代码动态添加监听事件
Button按钮监听函数测试代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_16_1 : MonoBehaviour
{
public void OnClickTest()
{
Debug.Log("点击了按钮");
}
}
下面介绍代码动态添加监听事件
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Test_16_2 : MonoBehaviour
{
Button TestBtn;
void Start()
{
TestBtn = GetComponent<Button>();
TestBtn.onClick.AddListener(OnClickTest);
}
public void OnClickTest()
{
Debug.Log("点击了按钮");
}
}
然后将脚本添加到Button组件上执行即可
在项目开发时,需要一个按钮模拟和控制开关,这就是Toggle的作用,Toggle组件通常进行状态判断,如是否记住密码,是否开启某些指令等
Toggle按钮监听函数测试代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Test_16_3 : MonoBehaviour
{
public void OnValueChanged(bool isOn)
{
if (isOn)
{
Debug.Log("开启");
}
else
{
Debug.Log("关闭");
}
}
}
将脚本绑定到相机对象上,再添加到OnValueChanged单击事件中
下面通过代码动态添加监听事件
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Test_16_4 : MonoBehaviour
{
Toggle TestToggle;
void Start()
{
TestToggle = GetComponent<Toggle>();
TestToggle.onValueChanged.AddListener(OnValueChanged);
}
public void OnValueChanged(bool isOn)
{
if (isOn)
{
Debug.Log("开启");
}
else
{
Debug.Log("关闭");
}
}
}
Slider是一个滑动条组件,一般用来制作血条或者进度条
下面我们来做一个滑动条自增的效果,类似于进度条 脚本代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Test_16_5 : MonoBehaviour
{
public Slider m_Slider;//Slider组件
public Text m_Text;//Text组件
void Start()
{
//值初始化
m_Slider.value = 0;
m_Text.text = "";
}
void Update()
{
if (m_Slider.value < 100)
{
m_Slider.value += Time.deltaTime;
//将value的取小数点两位
m_Text.text = m_Slider.value.ToString(("F")) + "%";
}
}
}
ScrollView组件是一个滚动窗口以及区域组件,在做游戏背包或者商城展示大量物品时,可以使用ScrollView组件
下拉菜单,可用于快速创建大量选择项、创建下拉菜单模板等
Dropdown组件比较常用的功能有添加选项、添加监听事件等等
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Test_16_6 : MonoBehaviour
{
public Dropdown m_Dropdown;
void Start()
{
//第一种添加下拉选项的方案
Dropdown.OptionData data = new Dropdown.OptionData();
data.text = "第一章";
Dropdown.OptionData data2 = new Dropdown.OptionData();
data2.text = "第二章";
m_Dropdown.options.Add(data);
m_Dropdown.options.Add(data2);
//第二种添加下拉选项的方案
List<Dropdown.OptionData> listOptions = new List<Dropdown.OptionData>();
listOptions.Add(new Dropdown.OptionData("第三章"));
listOptions.Add(new Dropdown.OptionData("第四章"));
m_Dropdown.AddOptions(listOptions);
m_Dropdown.onValueChanged.AddListener(OnValueChanged);
}
public void OnValueChanged(int value)
{
switch (value)
{
case 0:
Debug.Log("第一章");
break;
case 1:
Debug.Log("第二章");
break;
case 2:
Debug.Log("第三章");
break;
case 3:
Debug.Log("第四章");
break;
default:
break;
}
}
}
InputField组件是输入框组件,是一个用来管理输入的组件,通常用来输入用户的账号,密码或者再聊天室输入文字等等
下面添加单击登录按钮后显示密码和账号功能 代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Test_16_7 : MonoBehaviour
{
public InputField m_InputFieldName;
public InputField m_InputFieldPwd;
public Button m_ButtonLogin;
public Text m_TextInfo;
void Start()
{
m_ButtonLogin.onClick.AddListener(Button_OnClickEvent);
}
public void Button_OnClickEvent()
{
m_TextInfo.text = "账号:" + m_InputFieldName.text + " 密码:" + m_InputFieldPwd.text;
}
}
运行程序 输入账号和密码,单击登录按钮可以看到账号和密码显示出来
创作不易 觉得有帮助请点赞关注收藏~~~
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道rubyonrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作: 1、U盘一个(尽量使用8G以上的U盘)。 2、一台正常联网可使用的电脑。 3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。 4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。 U盘启动盘制作步骤: 注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里编辑 3.解析依赖到项目中
Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u