Unity红点系统
Unity红点系统(Lua语言实现)Unity红点系统是一种常见的游戏UI设计机制,用于提示玩家有未查看的内容或可操作的功能。它通常表现为一个小红点,出现在按钮、图标或菜单项上,提醒玩家进行交互。
红点节点脚本123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109local RedDotNode = class() -- class是项目中封装的一个模拟面向对象中的类的功能function RedDotNode:__new(name, parent) self.name = name -- 名称 self.parent = parent -- 父节点 self.chil ...
UGUI
UGUI中的Image和RawImage的区别Image 组件Image 组件是UGUI中最常用的用于显示图像的组件。它支持多种图像类型(如Sprite、Sprite Atlas、Texture2D等),并且提供了一些方便的属性来调整图像的显示方式,如**color(颜色)、material(材质)、sprite**(精灵)等。
主要特点:
支持Sprite和Texture2D:可以直接使用Unity中的Sprite或Texture2D资源。
具有内置的颜色调整:可以通过**color**属性调整图像的颜色。
支持材质:可以通过**material**属性应用自定义的Shader效果。
12345678910111213141516using UnityEngine;using UnityEngine.UI; public class ImageExample : MonoBehaviour{ public Image myImage; // 拖拽赋值或通过代码查找 void Start() { // 设置Sprite(需要先在项 ...
OS
异步
进程,线程,协程的区别?
1、进程
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全。
2、线程
线程是进程的一个实体,是CPU调度和分配的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。
3、协程
协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。
协程就是在unity ...
光照与光照模型
前言
对应 《Games101》
07 着色(光照与基本着色模型)
13 光线追踪(基本原理)
《 Unity Shader 精要》
06 Unity中的基础光照
6.1模拟光照模拟真实光照环境来生成一张图像,需要考虑3种物理现象
首先,光线从光源射出
然后,光线和场景中的物体相交:一些被吸收,一些被散射到其他地方。
最后,摄像机吸收了一些光,产生一张图像。
在本章中,假设漫反射部分没有方向性,光线在所有方向上是平均分布的。同时,只考虑一个特定方向上的高光反射。
6.1.1 辐照度辐照度(irradiance):垂直于I的单位面积上单位时间穿过的能量
一般来说,光照都不会和平面垂直,因此需要使用光源方向和表面法线之间的夹角cos余弦值得到照射面积。
6.1.2 吸收和散射散射(scattering)和吸收(absorption)
散射只会改变光线的方向,而不改变光线的密度和颜色。
吸收只会改变光线的密度和颜色,而不会改变光线的方向。
折射(refraction)或 透射(transmission)
光线在物体表面经过散射后,会散射到内部,称之为 ...
建模入门Blender(持续更新)
基本操作物体模式6物体模式和编辑模式下的 合并与分离物体模式:
“CTRL+J”:“join”。合并选中的多个物体。合并后的轴心在最后选中物体的轴心。
Ctrl 1 2 平滑模式数字
编辑模式编辑模式基本操作“TAB键”:切换编辑模式/物体模式。
“CTRL+TAB键”: 切换顶点/边/面。
“A键”: 全选或者取消全选。
“SHIFT+鼠标左键”:多选点线面
挤出(在编辑模式下)“E键”:选中点,线,面都可以挤出,但一般主要对面操作。
挤出时右键取消实际上还是挤出了,只不过重叠在原有位置
沿法向挤出
挤出各个面
挤出到游标
环切左键确定后可以按“S键”然后移动坐标轴进行缩放环切线。缩放时可以直接输入缩放倍数,在左下角有显示缩放当前倍数。
内插面“I键”
倒角选中边,按“CTRL+B”进行倒角,此时可以滚动滚轮增加倒角边。
环切环切 :”CTRL+ R” 按鼠标右键后环切线置于中间位置
多根环切线:”CTRL+ R 之后再滑动滚轮
切割工具k键
平分工具几何体切开
桥接多边形建形Ctrl 建立三角形
旋绕工具平滑平滑 不会切分面
随机 随机面
滑移边线顶点滑移
法向缩放 ...
源码角度分析Rebuild和Rebatch
前言在 Unity 中,Rebuild 和 Rebatch 是优化 UI 渲染性能的重要概念。了解它们的原理可以帮助开发者优化游戏的性能,尤其是在使用 Unity 的 UI 系统时。
Rebuild什么是Rebuild当发生一些脏标记的行为时,被标记为脏的对象需要进行重新计算或渲染
图形组件Rebuild在渲染Canvas前一帧,会去判断Graphic是否被标记为脏标记,如果是顶点脏标记就会去重建网格,如果是材质被标记为脏那么就会去重建材质
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364//重建方法public virtual void Rebuild(CanvasUpdate update){ if (canvasRenderer == null || canvasRenderer.cull) return; switch (update) { ...
OverDraw
UGUI优化 OverDrawUnity基础:性能杀手Overdraw详解 - 知乎 (zhihu.com)
Overdraw介绍 Overdraw是指屏幕上的某个像素在同一帧的时间内被绘制了多次。
3.2 Overdraw影响什么
过多Overdraw可能会引起GPU过载,影响动画的播放和界面响应速度。
3.3 降低Overdraw
1.将Mask(自带两层Overdraw)替换为RectMask2D(自带一层Overdraw)
2.全屏遮挡的情况,则为被遮挡的canvas添加CanvasGroup 组件,然后在被挡住时将其alpha值设为0,不参与绘制,没有 DrawCall也没有Overdraw,同时顶点也不会参与重绘。
3.unity的文字显示中自带阴影组件shadow/Outline减少使用,自带overcall。
4.UI摆放,减少UI的叠加效果。
5.将不想显示的物体直接禁用,而不是将其透明度改为0,仍会产生overcall。
如何降低OverDraw减少不透明OverDraw与流行的游戏开发理念 ...
unity 优化资源加载相关
场景优化Unity3D场景性能优化/渲染/卡顿/搭建优化 遮挡剔除/层消距离技术/LOD(多层次细节)_u3d5.6的遮挡剔除-CSDN博客
遮挡剔除(Occlusion Culling)Unity 中的遮挡剔除 Occlusion Culling 是一种性能优化技术,它可以帮助开发者减少需要渲染的场景物体数量,从而提高游戏的帧率和流畅度。遮挡剔除的基本思路是在运行时计算场景中哪些物体被遮挡而不需要被渲染,哪些物体是可见的需要被渲染。这样可以减少渲染所需的时间和开销,提高游戏性能。
Unity 中的遮挡剔除主要有两种方式:静态遮挡剔除和动态遮挡剔除。
静态遮挡剔除(Static Occlusion Culling)
是在场景构建时进行的,主要是通过 Unity 自带的预处理工具将场景物体分成一些区域,然后计算这些区域之间的遮挡关系。这种方式适用于静态场景和场景中的大部分物体都是静态的情况。静态遮挡剔除的优点是计算量小,不会对游戏运行时的性能造成太大影响。
动态遮挡剔除(Dynamic Occlusion Culling)
则是在游戏运行时进行的,主要是通过摄像机视野和场景中物体之 ...
unity Bulid-in 渲染管线
图形渲染管线图形渲染管线(Graphics Rendering Pipeline) - 知乎 (zhihu.com)
图形渲染管线是图形学知识考察最重要的一个问题,绝对是最高频的,必须掌握。问法有很多种,比如屏幕中一个像素是怎么绘制出来的,绘制出一幅图像的具体过程等。此外还有GPU渲染管线的问法,其实就是省去CPU阶段,直接从GPU阶段开始回答就行了,是一个意思。
什么是渲染管线图形渲染管线实际上指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程,在概念上可以将图形渲染管线分为四个阶段:
应用程序阶段、几何阶段、光栅化阶段和像素处理阶段。
调用Render()摄像机对象调用一个Render()
如同摄像机一样 调用渲染api 通知cpu开始渲染流程
CPU渲染管线-应用程序阶段剔除
剔除:视椎剔除、遮挡剔除、层级等规则
视椎体剔除
层级剔除 遮挡剔除
渲染顺序-排序渲染顺序:按距离、渲染队列等规则
渲染管线 Render Queue
不透明队列 (Render Queue<2500) ...