了解screen对象的常用视图属性

本文详细介绍了浏览器中的screen对象及其属性,包括屏幕的像素宽度和高度、可用宽度和可用高度等,并提供了不同浏览器下的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面的话

  screen对象基本上只用来表明客户端的能力,其中包括浏览器窗口外部的显示器的信息,如像素高度和宽度等。每个浏览器中的screen对象都包含着各不相同的属性。本文将详细介绍screen对象的常用视图属性

width

  width属性表示屏幕的像素宽度

height

  height属性表示屏幕的像素高度

//chrome:1080 1920
//IE/firefox/safari:864 1536
console.log(screen.height,screen.width);

avaiWidth

  availWidth属性表示显示器可用宽度,屏幕的像素宽度减去任务栏等系统部件宽度之后的值

availHeight

  availHeight属性表示显示器可用高度,屏幕的像素高度减去任务栏等系统部件高度之后的值

//chrome:1030(1080-50) 1920
//IE/firefox/safari:824(864-40) 1536
console.log(screen.availHeight,screen.availWidth);

 

转载于:https://www.cnblogs.com/xiaohuochai/p/5829959.html

<think>我们正在讨论UnityUGUI的常用组件及其属性和方法。根据之前的引用,我们有关于Canvas、CanvasGroup等组件的部分信息。UGUI的常用组件包括:1.Canvas(画布)2.CanvasGroup(画布组)3.各种基础控件(如Button,Image,Text等)由于引用中提到了Canvas和CanvasGroup,我们将重点介绍这两个组件以及几个基础控件(Button,Image,Text)的常用属性和方法。注意:引用[1]提到UGUI的六大组件和三大基础控件,但具体内容未详细列出。因此,我们将结合Unity官方文档和常见知识进行整理。以下是对常用组件的详解:###1.Canvas(画布)[^3]Canvas是所有UI元素的容器,它定义了UI的渲染模式。####属性:-**RenderMode**:渲染模式,有三种:-**ScreenSpace-Overlay**:UI覆盖在场景之上,不需要摄像机。-**ScreenSpace-Camera**:UI在指定摄像机前的一个平面上渲染。-**WorldSpace**:UI作为场景中的3D对象渲染,可以任意放置和旋转。-**PixelPerfect**:是否启用像素完美(仅适用于ScreenSpace模式)。启用时,UI将锐化以减少模糊。-**SortOrder**:在ScreenSpace-Camera模式下,用于控制多个画布的渲染顺序(值大的覆盖值小的)。-**TargetDisplay**:目标显示设备(多显示器情况下使用)。-**AdditionalShaderChannels**:指定画布网格需要的额外着色器通道(如法线、切线等)。####方法:Canvas组件本身没有太多公开方法,但可以通过代码控制其属性,例如:```csharpCanvascanvas=GetComponent<Canvas>();canvas.renderMode=RenderMode.ScreenSpaceCamera;canvas.worldCamera=Camera.main;```###2.CanvasGroup(画布组)[^2]CanvasGroup用于控制一组UI元素的某些共同属性(透明度、交互性等)。####属性:-**Alpha**:控制整个组的不透明度(0完全透明,1完全不透明)。-**Interactable**:组内的UI元素是否可以交互(如按钮是否可点击)。-**BlocksRaycasts**:是否阻挡射线检测(影响鼠标/触摸事件)。如果为false,则事件会穿过该组到达后面的对象。-**IgnoreParentGroups**:是否忽略父CanvasGroup的设置(只考虑自身的设置)。####方法:-没有特殊方法,但可以通过设置属性来控制:```csharpCanvasGroupgroup=GetComponent<CanvasGroup>();group.alpha=0.5f;group.interactable=false;```###3.Button(按钮)按钮是常用的交互控件。####属性(继承自Selectable):-**Interactable**:是否可交互。-**Transition**:状态过渡方式(颜色变化、精灵变化、动画等)。-**Navigation**:导航设置(用于手柄、键盘导航)。####按钮特有属性:-**OnClick**:点击事件(UnityEvent),可以绑定多个方法。####方法:-**onClick.AddListener**:添加点击事件监听。```csharpButtonbutton=GetComponent<Button>();button.onClick.AddListener(MyMethod);```###4.Image(图片)用于显示图片或简单图形。####属性:-**SourceImage**:源图片(精灵)。-**Color**:图片颜色(可调整透明度等)。-**Material**:材质(可选)。-**RaycastTarget**:是否作为射线检测目标(影响事件)。-**ImageType**:图片类型(Simple,Sliced,Tiled,Filled)。-**FillMethod**:填充方法(当ImageType为Filled时可用)。-**FillAmount**:填充量(0~1,用于进度条等)。####方法:-**SetNativeSize**:将图片设置为原始尺寸。```csharpImageimage=GetComponent<Image>();image.SetNativeSize();```###5.Text(或TextMeshPro-Text)基础文本控件(注意:Unity推荐使用TextMeshPro,但这里先介绍UGUI原生Text)。####属性:-**Text**:文本内容。-**Font**:字体。-**FontStyle**:字体样式(加粗、斜体等)。-**FontSize**:字体大小。-**LineSpacing**:行间距。-**Alignment**:对齐方式。-**Color**:文本颜色。-**RaycastTarget**:是否作为射线检测目标。####方法:-通常通过直接设置text属性来改变文本:```csharpTexttext=GetComponent<Text>();text.text="HelloWorld";```###总结以上是UGUI中几个常用组件的属性和方法。实际开发中,TextMeshPro提供了更强大的文本功能,建议使用TextMeshPro-Text组件替代原生Text。§§相关问题§§1.UGUI中Canvas的三种渲染模式有什么区别?2.如何使用CanvasGroup控制一组UI元素的交互状态?3.Button的点击事件有哪几种绑定方式?4.Image组件的填充类型(Filled)有哪些应用场景?5.为什么推荐使用TextMeshPro替代UGUI原生Text?</think>### Unity UGUI 常用组件属性与方法详解 以下是 UGUI 核心组件的关键属性和方法总结: #### 1. **Canvas(画布)** [^3] UI 元素的容器,控制渲染模式 - **属性**: - `Render Mode`:渲染模式 - `Screen Space - Overlay`:覆盖在场景最上层 * `Screen Space - Camera`:投影到指定摄像机平面 * `World Space`:作为 3D 对象融入场景 - `Pixel Perfect`:启用像素级精确渲染 - `Sort Order`:画布渲染优先级(值越大越靠前) - `Target Display`:多显示器配置 - **方法**: ```csharp canvas.worldCamera = mainCamera; // 设置渲染摄像机 canvas.overrideSorting = true; // 覆盖子元素排序 ``` #### 2. **CanvasGroup(画布组)** [^2] 批量控制子元素属性 - **属性**: - `Alpha`:组内所有元素的透明度(0-1) - `Interactable`:是否允许交互(按钮/输入框等) - `Blocks Raycasts`:是否阻挡射线检测 - `Ignore Parent Groups`:忽略父级 CanvasGroup - **方法**: ```csharp // 淡入淡出效果 IEnumerator FadeGroup(CanvasGroup group, float targetAlpha) { while (Mathf.Abs(group.alpha - targetAlpha) > 0.05f) { group.alpha = Mathf.Lerp(group.alpha, targetAlpha, Time.deltaTime * 5); yield return null; } } ``` #### 3. **Button(按钮)** - **属性**: - `Interactable`:是否可交互 - `Transition`:状态过渡类型(颜色/精灵/动画) - `OnClick()`:点击事件绑定 - **方法**: ```csharp // 动态绑定点击事件 button.onClick.AddListener(() => { Debug.Log("按钮被点击"); }); // 禁用按钮交互 button.interactable = false; ``` #### 4. **Image(图片)** - **属性**: - `Source Image`:源纹理(Sprite) - `Color`:颜色/透明度 - `Image Type`:渲染类型(Simple/Sliced/Tiled/Filled) - `Fill Amount`:填充进度(0-1) - **方法**: ```csharp // 动态修改图片 image.sprite = Resources.Load<Sprite>("new_icon"); // 创建进度条效果 image.fillAmount = currentHealth / maxHealth; ``` #### 5. **Text(文本)** *(建议使用 TextMeshPro)* - **属性**: - `Text`:显示内容 - `Font`:字体资源 - `Font Size`:字号 - `Alignment`:对齐方式 - **方法**: ```csharp // 动态更新文本 scoreText.text = $"得分: {currentScore}"; // 启用富文本标记 descriptionText.supportRichText = true; ``` #### 6. **Scroll Rect(滚动视图)** - **属性**: - `Content`:滚动区域内容 - `Horizontal/Vertical`:滚动方向 - `Scroll Sensitivity`:滚动灵敏度 - **方法**: ```csharp // 滚动到指定位置 scrollRect.verticalNormalizedPosition = 0.5f; // 居中 // 禁用水平滚动 scrollRect.horizontal = false; ``` #### 7. **Layout Group(自动布局)** 包含 `Horizontal/Vertical/Grid Layout` - **属性**: - `Spacing`:子元素间距 - `Padding`:内边距 - `Child Alignment`:子元素对齐 - **特殊方法**: ```csharp // 强制刷新布局 LayoutRebuilder.ForceRebuildLayoutImmediate(layoutGroup); ``` > **最佳实践**: > 1. 复杂 UI 使用 `CanvasGroup` 管理显隐状态[^2] > 2. `World Space` 模式需调整画布大小匹配 3D 空间[^3] > 3. 动态内容优先使用 `TextMeshPro` > 4. 性能敏感场景禁用 `Raycast Target` 属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值