![](https://img-blog.csdnimg.cn/47d485dcac78459aa92e7c79403fd254.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Unity
文章平均质量分 56
unity
九本才
一只来自济南的程序猿
展开
-
Unity Canvas不同模式下实现UI追随物体
在Canvas不同渲染模式(RenderMode)下实现UI跟随3D物体功能。原创 2023-06-20 10:48:27 · 1424 阅读 · 0 评论 -
Unity WebGl和前端(Angular)相互调用(含跨域问题)
在Unity官方文档中就已经介绍了Unity和JS相互调用的问题,但是我们实际的应用中往往是使用iframe来展示WebGL。这样不但是webgl和js相互调用的问题,还包含了iframe跨域的问题。我们的项目中前端使用的是angular框架,就以angular为基础来说一下这个问题,当然vue的前端框架应该都一样的原理。首先说一下unity和js相互调用的问题。原创 2023-05-29 14:57:42 · 1961 阅读 · 1 评论 -
Unity WebGL监听是否进入全屏模式
全屏一开始使用webkitRequestFullScreen,直接控制全屏发现,当点击全屏后,画面出现拉伸,需要点击一下才会回复正常的画面。第二个问题,做好js调用unity中的代码,控制title的显示和隐藏,然后增加这个方法就可以监听浏览区是否进入全屏状态。今天遇到一个需求打包成WebGL之后要当做一个iframe,嵌入到别的网页中,其中遇到两个难题。2.全屏的时候使用unity中的title,非全屏的时候要使用网页本身的title。修改打包后的CSS文件,将全屏按钮移动到画面中。原创 2023-04-20 14:25:52 · 672 阅读 · 0 评论 -
Unity中使用WebSocket (ws://)的方法
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。原创 2023-03-24 14:16:28 · 13816 阅读 · 4 评论 -
Unity 爬坑日记(遇到小坑就记录一下)
unity爬坑日记,遇到莫名其妙的报错或者问题就记录一下。原创 2023-01-11 08:49:56 · 1680 阅读 · 0 评论 -
Unity WebGL RuntimeError: integer overflow(整数溢出问题)
此枚举在 WebGL 平台中用于定义在 WebAssembly 代码中执行算术运算时使用的捕获类型。WebAssembly 代码会在除以零、将非常大的浮点数舍入为 int 等情况下抛出异常。仔细查看是WebAssembly在实例化的时候出现了问题。于是我门查看一下打包的设置。此模式通过在执行算术运算时将浮点值限制在合理范围内来避免陷阱。包含 WebAssembly 代码的不同捕获模式的枚举。今天在开发Web版项目的时候发现整数溢出的问题。设置为 Ignore,忽略掉浏览器的异常错误。...原创 2022-08-10 10:50:26 · 1830 阅读 · 0 评论 -
Unity UMP打包黑屏问题总结
UMP黑屏问题原创 2022-07-15 10:21:37 · 3495 阅读 · 5 评论 -
Unity 接入天气系统
我使用了高德开放平台的天气预报接口接入到Unity中。高德开放平台 | 高德地图API高德开放平台官网https://lbs.amap.com/注册高德开放平台后,鼠标移动到右上角头像后就会发现应用管理,点击应用管理,再点击创建新应用。 点击添加,Web服务就可以使用天气的API。 创建完成后就可以看到对应的Key然后我们查看开发文档就很容易获取到天气的数据。天气查询API服务地址:URLhttps://restapi.amap.com/v3/weather/weatherInfo?parameters请求原创 2022-06-30 14:04:43 · 2528 阅读 · 1 评论 -
Unity 2D游戏中的抛物运动
2D游戏中的抛物运动原创 2022-06-21 14:57:56 · 1164 阅读 · 0 评论 -
Unity 全景漫游过程中使用AWSD控制镜头移动,EQ控制镜头升降,鼠标右键控制镜头旋转。
Unity 全景漫游过程中使用AWSD控制镜头移动,EQ控制镜头升降,鼠标右键控制镜头旋转。原创 2022-06-09 16:09:47 · 2065 阅读 · 0 评论 -
Unity WebGL设置全屏方法。
打包完成后需要设置前段JS代码和CSS格式代码。添加width: 100%; height: 100%;修改:原创 2022-05-30 17:19:58 · 3260 阅读 · 0 评论 -
Unity 本地打开WebGL和Uncaught ReferenceError: unityFramework is not defined报错问题
下载火狐浏览器。Firefox的用户请在浏览器的地址栏输入“about:config”,回车在过滤器(filter)中搜索“webgl”将webgl.force-enabled设置为true将webgl.disabled设置为false在过滤器(filter)中搜索“security.fileuri.strict_origin_policy”将security.fileuri.strict_origin_policy设置为false关闭目前开启的所有Firefox原创 2022-05-30 17:16:31 · 1862 阅读 · 0 评论 -
Unity在PC端调用电脑镜头
今天买了一个电脑的前置镜头,就想Unity能不能也可以调用我们的电脑镜头呢?经过学习发现一个方法。调用 Application.RequestUserAuthorization 时,将请求获得麦克风和摄像机的许可权。应用程序向用户显示一个对话框并等待操作完成,然后才能使用这些功能。WebCam 获取摄像头的授权 Microphone 获取麦克风的授权 将代码挂在一个plane上就可以。using UnityEngine;using System.Col...原创 2022-04-18 16:00:05 · 1540 阅读 · 0 评论 -
Unity Bakery使用说明(一)
什么是Bakery 为什么用BakeryBakery 是一款可用于生产的高端 GPU 光照贴图器,其设计考虑了灵活性和性能。修复各种烘焙伪影,例如接缝、光/阴影泄漏、不正确的阴影终结器等。烘焙光照贴图不会比在离线渲染器中渲染相机帧带来更多问题。烘焙各种有用的光照数据。不同光源在任何组合中的直接和间接贡献、单独的阴影掩模、方向矢量、球谐函数等。照明也可以按顶点烘焙或放入探针中,而不是使用纹理。物理正确性。烘焙结果与著名的无偏见渲染器 Mitsuba 进行了彻底的比较。细节层次支持。Ba原创 2022-03-07 14:49:28 · 24443 阅读 · 4 评论 -
Unity Shader透明效果
在实时渲染中要实现透明效果,通常会在渲染模型时控制他的透明通道。当开启透明混合后,当一个物体被渲染到屏幕上时,每个片元除了颜色值和深度值之外,它还有另一个属性——透明度。当透明度为1时表示该像素是完全不透明的,当为0时,则表示像素完全不会显示。在unity中,我们通常使用两种方法来实现透明效果:第一种是使用透明度测试,这种方法其实无法得到真正的半透明效果;另一种就是透明度混合。对于不透明物体,不考虑他们的渲染顺序也能得到正确的排序效果,这是由于强大的深度缓冲的存在。在实时渲染中,深度缓冲是用于解决可原创 2022-02-16 17:16:54 · 8860 阅读 · 0 评论 -
Unity 实现画线火柴人核心画线功能
最近抖音上很火的小游戏,其中的核心划线功能。 [SerializeField] private float width = 0.1f; [SerializeField] private Color color = Color.black; private LineRenderer line; private Vector2 previousPoint; private void Update() { if (Input.GetMouse...原创 2022-02-16 11:23:47 · 2328 阅读 · 2 评论 -
Unity 安卓平台Reflection Probe中的Box Projection不能勾选问题
在部分Unity2020版本中Reflection Probe中的Box Projection默认是禁用的。解决方法Edit——Prohcet Settings——Graphics中的Tier Settings按照下图设置一下就可以了。原创 2021-12-30 11:50:14 · 3726 阅读 · 0 评论 -
Unity 模拟投影器(Projector Simulator)
准确模拟视频投影仪,使图像、视频和 RenderTextures 能够真实地投影。使用方法:支持(2017.4 及更高版本)将插件导入到项目中后点击ProjectorSimulator文件夹会发现三个预制体,每一个预制体对应了投影的类型,这里可以支持,图像、视频和 RenderTextures。RenderTextureProjector先创建一个Render Texture作为要投影的内容,其中Render Texture的Size会影响投影内容的清晰度。Image siz...原创 2021-12-15 15:03:38 · 6297 阅读 · 1 评论 -
Unity 代码动态生成模型
网格由 3D 空间中排列的三角形组成,旨在产生实体对象的效果。三角形由其拐点或者顶点定义。在 Mesh 类中,顶点全部存储在单个数组中,并且每个三角形使用与顶点数组的索引对应的三个整数指定。这些三角形还将全部集合在一个整数数组中;从该数组的开头以三个为一组的方式解读数组中的整数,因此元素 0、1 和 2 定义第一个三角形,3、4 和 5 定义第二个三角形,依此类推。Mesh类是对象网格几何体的基本脚本接口。该类使用数组来表示三角形、顶点位置、法线和纹理坐标,还提供了许多其他有用的属性和函数来辅助网格的生原创 2021-11-30 14:53:46 · 6192 阅读 · 0 评论 -
Unity 聊天室(Socket编程)
示例:什么是Socket:Socket(套接字),用来描述IP地址和端口,是通信链的句柄,应用程序可以通过Socket向网络发送请求或者应答网络请求!Socket是支撑TCP/IP协议的网络通信的基本操作单元,是对网络通信过程中端点的抽象表示,包含了进行网络通信所必须的五种信息:连接使用的协议,本地主机的IP地址,本地远程的协议端口,远地主机的IP地址,远地进程的协议端口。通信模型:服务端实现连接的步骤1.创建Socket,绑定IP和端口。2.调用Accept()监听客...原创 2021-11-16 15:36:58 · 8797 阅读 · 2 评论 -
Unity A星(A Star/A*)寻路算法
演示:我们知道Unity中的Navigation只能实现3D场景的寻路,不能实现2D的寻路,常见的寻路算法有很多种,其中A星是项目中最常用的寻路方法。在项目中用到了A星,就简单总结一下吧。原理:最通俗的原理就是寻找周围的点。选出一个到终点最近的点,再从选出的点为起点寻找下一个点,直到到达目标点。实现:如何选出最近的点呢,我们就会利用曼哈顿街区算法公式寻找下一个点。如下图:我们以黄色为起点,黄色的点周围有八个可以移动的点,移动的距离对角移动为1.4,直线移动为1。..原创 2021-11-08 15:18:33 · 8499 阅读 · 8 评论 -
Unity 设计模式——观察者设计模式
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。使用场景:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。举例:我们用猫抓老鼠的来举例子。当汤姆猫进屋子的时候,杰瑞用跑步的方式逃跑,米老鼠骑自行车逃跑,舒克开坦克逃跑。这个时候汤姆猫就是被观察者,有一个进屋子的方法。杰瑞,米老鼠,舒克就是观察者都有一个逃跑的方法。优点:1、观察.原创 2021-11-02 23:29:34 · 1062 阅读 · 2 评论 -
Unity 一款基于UGUI的数据可视化图表插件(XCharts 2.0)。
XCharts是一款基于UGUI的功能强大、易用、参数可配置的数据可视化图表插件。支持折线图、柱状图、饼图、雷达图、散点图、热力图、仪表盘、环形图、极坐标、水位图、K线图等常见图表。下载地址:GitHub - monitor1394/unity-ugui-XCharts: A charting and data visualization library for Unity. 一款基于UGUI的数据可视化图表插件。A charting and data...原创 2021-10-25 14:12:28 · 3670 阅读 · 0 评论 -
Unity 贝塞尔曲线之美
最近项目中用到了贝塞尔曲线,学习完成后记录一下自己的学习结果吧。一阶贝塞尔曲线一阶贝塞尔曲线就是一条线,我们很容易根据 t 求出 t 点的位置。P(t)=P0+(P1-P0)*t =(1-t)*P0+tP1 ; t[ 0,1] ,且其等同于线性插值。二阶贝塞尔曲线取平面内三个不共线的点,AB:AC=CD:CE,这个时候BD又是一条直线,可以按照一阶的贝塞尔方程来进行线性插值了。P(B)=(1-t)*P0+tP1 ;P(D)=(1-t)P1+tP2 ;P...原创 2021-10-13 16:47:50 · 989 阅读 · 0 评论 -
Unity 动画混合树实例(Blend Tree)
先看效果游戏动画中的一项常见任务是在两个或更多相似运动之间进行混合。也许最熟知的示例就是根据角色的速度来混合行走和奔跑动画。另一个示例是角色在奔跑期间转向时向左或向右倾斜。使用方法:1.右键单击 Animator Controller 窗口上的空白区域。 1.从显示的上下文菜单中,选择Create State > From New Blend Tree。 1.双击混合树 (Blend Tree) 以进入混合树视图 (Blend Tree Graph)。Animator ...原创 2021-10-11 16:42:04 · 5555 阅读 · 0 评论 -
Unity 简单几句代码实现无限循环列表(Scroll View)
先看效果这里是Scroll View的设置:using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class Panel_MyScroll : MonoBehaviour{ public Transform s_content; private List<GameObject> s_card;.原创 2021-09-26 13:48:16 · 3671 阅读 · 4 评论 -
Unity 性能优化方法总结
性能优化是游戏项目开发过程中一个永恒的话题。这里主要从五个方面对项目进行优化,分别是内存,资源,图形和GPU,编程和代码框架,项目中这种资源组件的配置。资源资源管线可以大幅影响应用程序的性能。正确导入纹理纹理会占用大部分内存,因此,导入设置非常重要。通常,请遵循以下指导原则 : 减小 Max Size :使用能生成视觉上可接受的结果的最低设置。这种非破坏性方式,可以快速降低纹理内存。 使用 2 的幂 (POT) :Unity 要求移动端纹理压缩格式 (PVRCT 或 ETC)原创 2021-09-16 11:19:55 · 17335 阅读 · 6 评论 -
Unity 文件操作之文件的增删查改
解释全在注释里。复制代码挂上运行查看效果,可根据自己的需求修改。using System;using System.Collections;using System.Collections.Generic;using System.IO;using System.Text;using UnityEngine;public class MyFile : MonoBehaviour{ void Start() { Debug.Log(Appl.原创 2021-09-04 15:57:18 · 1022 阅读 · 4 评论 -
Unity 使用UnityWebRequest下载超大资源,实现断点续传和分段下载。
最近有个项目需要在服务器下载视频资源到本地,然后在本地播放视频,一开始看Unity官方文档找到资源下载的方法,但是在下载超大资源(一个2.8G的.mp4格式的视频)的时候回出现未知错误导致视频不能下载下来,先看官方提供的方法如下。using System.Collections;using System.IO;using UnityEngine;using UnityEngine.Networking;public class FileDownloader : MonoBehaviour {原创 2021-08-25 22:54:57 · 7535 阅读 · 10 评论 -
Unity 设计模式——状态模式
在游戏开发过程中,游戏中的部分对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时,其内部状态就会发生改变,从而使其行为也发生改变。如人都有高兴和伤心的时候,不同的情绪有不同的行为,当然外界也会影响其情绪变化。对这种有状态的对象编程,传统的解决方案是:将这些所有可能发生的情况全都考虑到,然后使用 if-else 或 switch-case 语句来做状态判断,再进行不同情况的处理。但是显然这种做法对复原创 2021-08-23 14:40:06 · 1541 阅读 · 0 评论 -
Unity 基于UGUI的UI框架 (UIFramework)
文件结构PanelInfousing System;using System.Collections.Generic;[Serializable]public class UIPanelInfo { public string panelTypeString; public string path;}[Serializable]public class UIPanelTypeJson{ public List<UIPanelIn...原创 2021-08-19 21:10:06 · 2484 阅读 · 3 评论 -
Unity 中的单例方法
前沿:在我的工作期间和学习期间,看过和学过很多单例方法,可谓是奇形怪状,不过都能实现其功能。今天我将学到的和自己思考出来的单例方法进行一个汇总和分析。单例一:最简单的单例方法 A --- 继承于MonoBehaviour 1.首先创建一个名叫:XXXManager.cs 的脚本,这个脚本就是我们的单例了。这个最简单的单例方法实现如下: 2.如何调用呢?我们创建一个叫 Main.cs 的脚本来调用它,在其Start()方法里面,调用XXXManager的TestMet转载 2021-08-18 22:43:05 · 1209 阅读 · 0 评论 -
Unity ScriptableObject简单应用
ScriptableObject 是一个可独立于类实例来保存大量数据的数据容器。ScriptableObject 的一个主要用例是通过避免重复值来减少项目的内存使用量。如果项目有一个预制件在附加的 MonoBehaviour 脚本中存储不变的数据,这将非常有用。ScriptableObject 这种资源只需设置一次就可以在项目中一直使用。它不能直接附加到游戏对象。在 ScriptableObject 中创建字段来存储值或设置,然后在 Monobehaviour 中引用该 ScriptableObje原创 2021-08-17 17:20:12 · 1042 阅读 · 2 评论 -
Unity 免费的高亮插件——QuickOutline
开发中,我们有很多地方会用到物体高亮这个功能,网上搜索后大部分是HighLightSystem来实现的高亮功能,其实还有很多的方法实现物体的高亮。只要你再Unity商城搜索OutLine,就会有很多免费好用的高亮插件。我就介绍一下QuickOutline这个插件吧。首先将插件导入到工程里边。查看Demo你会发现有五种高亮模式。1.Silhouette Only:模型被遮挡的部分整体高亮;2.Outline Hidden:模型被遮挡的部分轮廓高亮;3.Outline All:整..原创 2021-08-13 13:56:21 · 5159 阅读 · 7 评论 -
Unity 模型透明度变换,实现3D模型淡入淡出效果。
开发中我们不仅需要UI界面淡入淡出,有时候还需要模型淡入淡出。我们在面板上修改color的a值时发现并没有效果。那是因为我们设置的RenderingMode是Opaque。官方标准shader中的Opaque pass段是不能显示半透明效果的,所以我们需要设置RenderingMode为Fade或者Transparent。然后在修改color的a值,达到淡入淡出的效果。效果如下:通常我们淡入一个模型只会传入这个模型的GameObject,所以我们自写一个类来处理这个模型淡入的一些事件。代码如下:.转载 2021-08-11 16:37:14 · 3401 阅读 · 0 评论 -
unity 场景叠加和卸载场景
场景叠加加载: SceneManager.LoadScene("SceneName", LoadSceneMode.Additive);场景卸载: SceneManager.UnloadSceneAsync("SceneName");原创 2021-08-05 10:37:03 · 3396 阅读 · 0 评论 -
unity 自动寻路开始,人物播放行走动画,到达目的地播放站立动画。
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.AI;public class RobotManager : MonoBehaviour{ public NavMeshAgent robotNav; public Transform target; void Start() { } // Upd.原创 2021-07-23 10:56:47 · 1032 阅读 · 3 评论 -
Unity中常用数据结构的,特点,优缺点,实例。
Unity中常用的数据结构有一下几种:Array,ArrayList,List,LinkedList,Queue,Stack,Dictionary;就一一分析一下他们的特点,优缺点和用法吧,要是有错误的地方欢迎指正;一,数组(Array)特点:数组属于线性结构,在内存中是连续存放的。 数组的元素类型必须相同。 数组可以直接通过下标访问。 数组的查找速度非常快,新增和删除速度慢。 数组在初始化时要指定数组长度。优缺点:优:存储在连续内存上;内容都是相同类型;可以通过下标访问,原创 2021-06-24 15:27:24 · 2842 阅读 · 0 评论