
unity3D
文章平均质量分 72
记录常用操作及技巧
千年奇葩
业务范围:3D引擎、游戏、Web前端、跨平台软件、aigc。最近看机会,求捞啊
展开
-
用Shader glsl实现一个简单的PBR光照模型
PBR模型定义了各种光照属性,如基础颜色、金属度、粗糙度等,就像给物体设定各种 “性格特点”。顶点着色器负责把顶点从模型空间转换到裁剪空间,同时计算一些用于光照计算的参数,就像给顶点 “搬家” 并准备好 “行李”。而片段着色器是整个 PBR 实现的核心,计算每个像素的颜色。它通过采样纹理获取各种属性值,然后根据 PBR 光照模型计算漫反射和镜面反射项,最后结合环境光得到最终颜色,就像给每个像素 “化妆”,让它们看起来更真实。原创 2025-02-14 18:15:28 · 555 阅读 · 0 评论 -
unity的安装,配置,及问题。
下载unity 在官网下载unity unity有三个版本,个人版免费,pro和专业版收费. 个人版 在导出exe文件时不能去掉水印片头。其他版本可以。 地址[https://store.unity.com/cn/download?ref=personal]安装 安装的时候 注意有个vs下载 如果已经安装了vs注意要去掉这个,另外在simple中 包含了完整的应用实例。下载原创 2017-12-05 18:00:57 · 1865 阅读 · 0 评论 -
unity3d 5.5 Path finding Project+Pro4.1.10 笔记。
2D ToolkitPlaymaker原创 2017-12-13 19:15:09 · 466 阅读 · 0 评论 -
3d软件blender 导入骨骼模型到unity 模型添加骨骼
1,建好人体模型 2,创建骨骼 3,先选中模型。再shift选中骨骼 然后ctrl+p 自动权重 组合注意原点问题, ctrl+c 是原点回中。ctrlshiftalt+v是对齐。4.在unity 中 让fbx文件拖进资源窗口,然后在属性窗口中,设置改模型为humanid 然后setting骨骼对齐。处理对齐后就可以了。 5,新建一个animator 放入动画文件。就可以动了。原创 2017-12-27 04:26:39 · 7369 阅读 · 0 评论 -
xlua用法,lua脚本调用c#
lua调用c#lua调用c#的对象所有c#对象都放在CS中CS.System;CS.System.IO;CS.UnityEngine.GameObject();lua调用c#静态变量基本脚本结构【luai脚本】-- 全局变量s1 = "this is lua"--引用unity方法local GameObject = CS.UnityEngine.GameObjectloc...原创 2020-04-27 05:30:24 · 2640 阅读 · 0 评论 -
xlua用法 c#调用lua脚本
C# 调用 luac# 调用lua脚本的三种方法【直接运行代码】luaEnv.DoString("print(888)");【运行Resources目录下的lua脚本】// 直读 Assets/Resources下的lua脚本。比如脚本是test.lua.txt,输入脚本名忽略扩展名txt,即test.lua。 TextAsset luaScript = Resources.Load...原创 2020-04-27 05:29:25 · 2395 阅读 · 0 评论 -
Unity SRP 可编程渲染管线的基本用法
可编程渲染管线使用教程SRP 可以处理Canvas为Screen Space - Overlay的渲染首先进入package manager,下载Core RP Lib组件新建脚本取名为MPipeLine,该脚本用于实现渲染管线的处理逻辑编写渲染管线与编辑器关联创建脚本MPipelineAsset,用于与unity编辑器建立关联,允许将工程与自定义渲染管线进行绑定创建并配置PipeLine Asset首先创建Asset文件点击Edit > projectsettings > graphic原创 2024-09-10 14:56:43 · 680 阅读 · 0 评论 -
Unity 渲染管线自动转换的实现 支持HDRP转URP,URP转HDRP
HDRP和URP无法平滑切换,因为属性、功能差异巨大。本脚本仅对可对应的默认脚本和属性做了转换处理。细节调整还需自己搞。自动转换可以节省手动更换shader、texture、通用属性的问题。原创 2024-02-02 15:37:13 · 3547 阅读 · 9 评论 -
Pico VR眼镜(XR) Unity开发环境部署及打包教程,包含瞬间移动、转向等基本操作配置
回到Package Manager,点击左上角+号,再点击INstall package from disk,在弹出的文件选择器中,选择我们刚解压出来的package.json文件,然后improt 这个包就行了。如果你使用的功能是所有VR设备都有的功能,比如手柄方向,位置,按钮等这种通用功能,那推荐下载PICO Unity OpenXR。点击下面Run Device 后方的 Refresh按钮,直到刷出VR眼镜,选择该眼镜,然后点击Build And Run等待完成即可在眼镜中看到我们的程序了。原创 2023-12-04 19:51:24 · 10091 阅读 · 2 评论 -
Unity中使用HttpListener创建本地Http web服务器教程与完整代码
下方有完整代码和使用方法,急用的请直接拉到最下方本文可以实现不开新进程在Unity中创建http服务器。监听自定义ip获取指定目录下的网页或其他资源。如果网页内有其他资源链接也可以正常访问。在Unity中搭建简易http服务主要分为三步监听访问请求解析请求响应请求。原创 2023-12-15 19:46:09 · 3707 阅读 · 1 评论 -
Unity项目转微信小游戏 微信小程序保姆教程,繁杂问题解决,及微信小游戏平台简单性能测试
Unity导出微信小游戏 使用教程,疑难问题解决方案 unity转微信小程序性能测试 微信小游戏与原生移动android ios平台性能对比测试原创 2023-11-07 20:45:16 · 25785 阅读 · 6 评论 -
unity 浏览器插件【embedded browser(原zfbrowser)】简单教程,使unity支持web h5页面,附软件下载链接
unity 浏览器插件【embedded browser(原zfbrowser)】使unity支持web h5页面原创 2023-10-17 14:06:46 · 5486 阅读 · 19 评论 -
unity中使用代码接绘制三维模型
一 模型的构成在三维世界中,绘制一个模型并不是什么很复杂的问题。只要知道了基本原理一切需求便迎刃而解。如下图所示,任何模型都是由点线面构成的,而面的最小单位是三角形。任何一个多边形的面,都是由多个三角形构成的。比如一个四边形,就是由ab两个三角形构成的。构成一个正方形的两个三角形,可以由四个点构成,也可以由六个点构成。下图就是由四个点构成的正方形,两个三角形分别是abc和adb。一个三角形,由三个点组成。在计算机渲染图形的时候,会根据三个点的位置来对他们包围的图形区域进行补间操作,补间出来的原创 2022-12-25 20:29:02 · 6893 阅读 · 0 评论 -
使用邪恶公司颁发的企业证书unity 打包 ios
经过2天的探索终于搞明白使用企业打包的流程首先说一下我的应用背景:公司需要一个ios app 给客户使用。公司发给我.p12的企业证书公司ios开发者企业账号并没有把我加入开发team企业证书申请的那些 网上到处都有,我这个使用场景没有用到那些就不赘述了。无图干货一 安装证书双击.p2扩展名的企业证书,会提示你输入证书密码。这个密码管负责人要。然后还会要求你输入当前电脑的登录密码。输入后成功安装证书。证书安装后不要在钥匙管理器中删除,否则会造成证书失效。二 导出unity项目将uni原创 2021-04-21 10:32:37 · 1521 阅读 · 0 评论 -
unity editor 编辑器插件制作基础:五、物体在Scene窗口中编辑状态下的辅助显示,以及控制功能扩展OnDrawGizmos GizmoType
一 说明该功能只能在编辑状态下运行,并只能在scene窗口中显示。脚本必须继承MonoBehaviour ,并且引入UnityEngine和UnityEditor库可以选择相关方法,在鼠标选择父物体或子物体的范围内执行,也可以设置被选择,或不被选择才执行,可以用于显示标签、辅助线等用途大量可直接调用的scene组件都可在这里找到 https://docs.unity3d.com/ScriptReference/Handles.html1.1 引用库using System.Collections原创 2021-02-03 02:51:24 · 1090 阅读 · 0 评论 -
unity editor 编辑器插件制作基础:四、Scene窗口中的子窗口面板菜单UI组件,以及物体对象控制组件功能扩展
https://blog.youkuaiyun.com/LLLLL__/article/details/112604712原创 2021-01-27 10:54:05 · 1293 阅读 · 0 评论 -
unity editor 编辑器插件制作基础:三、自定义窗口组件
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;public class MapCreatorTools : EditorWindow{ [MenuItem("GameObject/window")] static void AddWindow() { //创建窗口 Rect wr = new Rec原创 2021-01-26 14:13:58 · 1074 阅读 · 0 评论 -
unity editor 编辑器插件制作基础:二、脚本组件inspector Edtor GUILayout高级面板功能扩展
1首先必须创建继承了Monobehevier的脚本,并将其附在物体上。2 然后创建继承unityEditor的脚本,与之前创建的脚本绑定,用于专门处理inspector控件。普通脚本editor脚本注意这个脚本如果放在editor文件夹内,打包...原创 2021-01-26 13:44:17 · 1842 阅读 · 0 评论 -
unity editor 编辑器插件制作基础:一、脚本组件inspector面板UI组件功能扩展
新建工具栏菜单1.首先在Asset下创建Editor文件夹,Editor文件夹中的内容仅作为开发工具保存在项目中,不会被打包进程序包中2.并创建cs脚本粘贴该代码代码:using System.Collections;using System.Collections.Generic;using UnityEngine;//第一步加载unity编辑器库和io库using UnityEditor;using System.IO;//第二部继承Editorpublic class NewBe原创 2021-01-26 10:49:05 · 1221 阅读 · 0 评论 -
unity Camera相机组件 和 cinemachine摄像机组件 功能实现 镜头角度旋转、平移、缩放、位置重置、自动避障、多摄像机切换等功能相关设置技巧
虚拟摄像机freelookA,freelookB当A根据目标位置发生移动,切换到B,再由B切换回A时,摄像机朝向为切换到B时的朝向,如果需要复原摄像机位置,需要:1.将binding mode改为LockToTargetWithWorldUpfreeLookCam.PreviousStateIsValid = false;freeLookCam.m_XAxis.Value = 0;freeLookCam.m_YAxis.Value = 0.5f;3.如果重置后X轴位置不对,检查headin原创 2021-01-11 11:17:09 · 10836 阅读 · 7 评论 -
unity场景切换 场景预加载 与loading页面加载进度条显示
关于场景转换和loading页我们玩游戏的时候,在进入游戏或场景切换的时候一般都会有一个loading页面。如果我们制作一个loading页应用到所有的场景转换,那无疑会减少很多麻烦。实现思路专门用于加载资源。一般我们会专门建立一个loading的场景,然后每次场景切换时我们都先载入loading场景,在loading场景中加载目标场景的资源,当加载完成后,再由loading场景切换到目标场景。实现步骤...原创 2020-12-31 22:18:49 · 5434 阅读 · 0 评论 -
unity3d 批量替换模型材质的脚本 一键替换模型及子物体材质
没什么好说的,特殊需求特殊实现。批量替换模型及其所属子物体所有材质的脚本。步骤1 在assets文件夹下 建立名为Editor的文件夹,该文件夹不会被打包编译,只会在unity编辑器下运行步骤2 在Editor文件夹下建立名为ChangeModelMaterils.cs的脚本,然后将下列代码粘贴using System;using System.Collections;using System.Collections.Generic;using UnityEditor;using Unity原创 2020-12-25 10:39:49 · 4751 阅读 · 2 评论 -
Unity Animation Event 动画事件使用教程 及事件无法触发不触发的解决办法
Animation Event ,顾名思义,就是动画中的事件。比如我们现在有这样的需求:当前模型移动到某个位置后触发一个自定义的事件,然后再移动回来,这时就需要调用Animation event来实现了。Animation 的使用方法使用Animation Event有两种方法。一种是通过代码添加事件。一种是使用可视化动画控制器来添加事件。个人比较推荐动画控制器的添加方式,因为这样更加直观而且修改更加方便。下面分别说说这两种事项方式一 通过动画控制器添加事件步骤:在animator绑定的物体上添原创 2020-12-11 10:38:23 · 29763 阅读 · 3 评论 -
Unity Animator Animation详解及应用实例教程
什么是animat本质上讲,动画就是以时间帧的方式记录物体某一时刻的状态,然后按一定顺序播放。所有软件的动画原理都是如此。什么是Animatoranimator,就是unity 用于管理多个动画播放状态的管理器,它允许你通过拖拽的方式管理你的动画顺序与触发条件。从而实现复杂的动画或交互效果。然而,animator最最有魅力的地方,在于它对动画的融合、过度处理。这一点会在稍后讲到。...原创 2020-12-10 14:55:23 · 8880 阅读 · 0 评论 -
Anti-Aliasing抗锯齿 SSAA MSAA FXAA三维游戏抗锯齿技术浅谈
今天组里同学询问关于抗锯齿的问题,我尽量简化成人话方便理解。关于抗锯齿的技术有很多种,有的基于硬件,有的则完全依赖算法计算。总的来说,锯齿是软硬件沟通差异导致的问题,是开发者最常见的问题之一。实际上很多引擎或三维包都自带抗锯齿算法,比如FXAA, MSAA, SSAA等。知道其中原理有助于我们因地制宜地选择相应技术实现甲方的无耻需求,也可以方便的实现自己下流的目的。SSAA图像缩放抗锯齿技术。原理:输出屏幕结果时,先生成一个更大分辨率的图像,然后再缩放成为目标分辨率图像。由于最终输出的每个像素都原创 2020-12-02 15:19:24 · 2585 阅读 · 0 评论 -
使unity 支持gltf 3d模型格式 UniGLTF插件
关于gltf模型格式gltf是一种更适合web项目使用的3d模型格式。相比较其他模型格式他的优势十分明显:大幅减少模型容量,有效节省带宽。根据本人体验,可以至少可以节省5倍的空间。现在很多3d人间都已经支持该格式了,就连自带的3d画图板都可以直接解析该格式了UniGLTF插件如何导入...原创 2020-11-13 11:34:26 · 6737 阅读 · 2 评论 -
unity使用遮挡剔除occlusion culling bake时出现 No asset directory的问题
在unity中使用遮挡剔除功能的时候 ,bake作用域出现 No asset directiory的问题。经试验,是因为scene没有保存,所有无法生成bake data。只要保存scene即可解决原创 2020-10-29 15:53:54 · 2058 阅读 · 0 评论 -
unity静动态批处理的触发条件以及无效的问题解决办法 batches saved by batching
使用unity内置的批处理功能可以起到很好的性能优化效果。批处理分为静、动态两种【静态批处理 Baches Static】静态批处理效果最好条件要求最简单,但要注意被标记为静态批处理的物体不允许改变位置。由于光照bake的原因,也会导致静态物体的阴影信息会烘焙到受影响的物体贴图上,所以从效果上也不应该再被移动。【使用条件&步骤】首先必须确定相同批次目标物体的Mesh Filter组件的Mesh必须相同点击目标物体,在Inspector窗口勾选Static。【使用动态批处理(Bach原创 2020-10-28 15:00:58 · 4766 阅读 · 1 评论 -
unity Physics.Raycast 射线进入离开collider、开始结束碰撞检测功能的实现
问题与解决思路问题当使用unity的射线组件时,发现unity只提供了射线与物体碰撞的时的响应办法。这就尴尬了,因为我的需求是获取射线在某物体停留、或是射线离开某物体的信息。本以为被碰撞物体的collider会解决这个问题,结果发现虽然使用raycast需要物体必须有collider,但并不会触发collider相关的事件。没办法,只能自己解决了。解决思路解决思路其实很简单,编写一个脚本,定义射线与物体碰撞、停留、离开三个事件,通过不断更新射线的扫描目标信息并与上一帧已保存的信息进行对比,来推算行为原创 2020-09-13 16:34:41 · 6005 阅读 · 4 评论 -
unity ray射线说明, 及使用ray拾取物体的方法。
using System.Collections;using System.Collections.Generic;using UnityEngine;public class mainRay : MonoBehaviour { private GameObject pickGameObj=null; //从摄像机到 鼠标位置发出射线 private Ra原创 2017-12-18 19:40:54 · 12121 阅读 · 0 评论 -
unity json数据处理方式之 LitJson 使用教程,支持键值对方式,支持包括webgl在内的全平台
最近遇到了新的需求。由于后端人员数据不规范,导致本该是数组的部分被构建成了对象。由于unity自带的json工具JsonUtility必须要构建相同的类结构才能反序列化,所以这样就出现了一个问题,即数字无法成为参数。我们无法构建这样的数据格式。那就没办法了。只能选择键值对的方式来获取数据目前支持全平台编译的json工具库比较有名的有三个,分别是:JsonUtility、newtonjson还有LitJson。其中newtonjson体积过于庞大(250k),而JsonUtility又不支持键值对。所以我原创 2020-09-03 18:03:10 · 14138 阅读 · 1 评论 -
扩展unity Playerpref 支持更多数据类型,解决不支持bool、vector3、quaternion等问题
unity Playerpref 是什么unity Playerpref 是unity自带的本地数据持久化的组件。在不同的平台都可以实现本地保存。比较适合保存用户设置、游戏存档等。unity Playerpref 的基本调用方法unity Playerpref 默认只支持三种数据类型的保存,分别是string、int、float。对应的调用方法是://首先必须引用的using UnityEngine;//字符串类型数据的写入PlayerPrefs.SetString ("value name原创 2020-08-10 14:35:29 · 1901 阅读 · 0 评论 -
unity phpstudy 打包webgl 跨域问题 UnityWebRequest CORS No ‘Access-Control-Allow-Origin‘ header is present
问题描述unity项目打包成webgl,在使用外部资源或使用UnityWebRequest获取数据时,浏览器提示错误:Access to XMLHttpRequest at has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.解决思路只是普通的前端跨域问题。有点后端经验就能解决,只需要做跨域设置。但如果本地测试环境是phpstudy原创 2020-08-06 16:40:54 · 4244 阅读 · 0 评论 -
VS Code 不支持unity c#项目的自动补全 或 unity debug 插件无效的解决办法
使用文编编辑器打开项目根目录中扩展名为csproj文件Ctrl + F 搜索"TargetFrameworkVersion"关键字,可以看到"v4.7.1"这条信息这说明你的电脑里缺少这个版本的.net Framework去【微软官网】下载相应的版本...原创 2020-07-29 12:45:56 · 5788 阅读 · 2 评论 -
webgl框架介绍以及webgl项目的技术选型问题
废话部分最近面试了很多公司,感慨颇多技术选型是重中之重,应该是所有企业的共识,这不仅关于到当前项目的交付,也涉及到未来项目的生命线和前景。但就有人当儿戏。不管是什么技术,选型决策者都应该具备开阔的技术视野。有个前辈曾对我说过,什么事情最好亲自尝试,知道和做过,是完全两个不同的概念。所以也推荐选型的项目管理人员应该亲自调研,以免造成损失。有些公司明显因为技术选型的问题把项目带进的不上不下的境地。让我印象最深刻的就是前些天遇到一家专做交通规划的公司,选了一个不合适的技术栈全家桶,项目进行到中期整个技术部原创 2020-07-26 10:32:41 · 7175 阅读 · 4 评论 -
unity的错误解决办法:NullReferenceException: Object reference not set to an instance of an object;tiny proje
普通unity项目正常的项目中,这是个非常初级的错误。比较常见的原因是就是在对象被引用前没有实例化。即是说,你要管理好程序的生命周期。解决办法1:设置不同的生命周期生命周期就是脚本中的Awake、Start、Update等方法。他们会以一定的顺序在程序中执行。如果存在上下调用关系最好不要在相同的生命周期中使用。比如两个都在Start中的对象引用,被一引用的那个对象的实例化最好放在Awake中。解决办法2:相同的生命周期,要计算好脚本运行顺序如果一定要在相同的生命周期中调用,比如都在start原创 2020-07-24 14:16:15 · 20139 阅读 · 0 评论 -
游戏数据传输帧同步中,自定义浮点(float)、二维向量(vector2)、三维向量(vecter3)、四元数(Quaternion)的数据类型的实现
由于帧同步需要各客户端的浮点数不能出现误差,所以需要使用经过处理过的浮点数。不只是浮点数本身,所有基于浮点数实现的数据类型都要经过处理,包括Vector2、Vector3、Quaternion等等由csharp代码实现,直接拖入unity可直接使用自定义浮点数类型:mFloat// 添加该标签可以保证该数据类型可以被json等工具正常序列化[Serializable]class mFloat{ // 存储中会使用的真实值 public int realValue = 0; //原创 2020-07-13 11:57:01 · 2521 阅读 · 1 评论 -
网络游戏数据同步的实现 一:状态同步、帧同步的基本原理概述
网络游戏,最重要的部分应该就是数据同步了。一个游戏的数据同步质量,直接影响这个网游的操作体验。做出一个一步一卡的游戏,一定会成为其最大的槽点。记得我当年最早玩的网络游戏《传奇》,那真是处处可卡bug满天飞,,,即使是这样,大家仿佛觉得这卡顿是天经地义的,面不改色的接受这种摧残。。。除了服务端的硬件投入以外,数据同步方式的不同也直接会影响性能。拿时下比较火爆的几个网游为例,数据同步方式大致分为以下几种:操作同步。信息同步。3。 3...原创 2020-07-13 01:15:28 · 9110 阅读 · 0 评论 -
unity 多种角色控制方式介绍 以及 CharacterController角色控制器详解
操作主人公,我们一般有以下几种办法使用物理引擎操控直接操作坐标使用角色控制器1. 使用物理引擎操作物理引擎操作的好处是可以使用诸多物理特性。当游戏有大量碰撞或移动特性时,使用这个比较好。比如赛车游戏。你可能需要设置赛车的重量来决定过弯的表现和撞车时力反馈的计算,又或是爆炸时被波及的力度。使用物理引擎操作的主要方式就是添加力。由此可知,向前移动就是添加向前的作用力,跳跃就是添加向上的作用力,物理效果会让人物跳跃后自动下降。【操作】首先先点击物体,在inspector面包中点击add co原创 2020-06-30 14:14:33 · 11376 阅读 · 0 评论 -
unity particle system 粒子系统 制作闪电放电效果
unity 粒子系统制作闪电制作闪电效果的方法有以下几种:2d动画方式(适合2d游戏的背景或范围技能,性能最好,效果看设计师水平)LineRenderer划1线的方法(可以动态设定起点和终点,适合需要指定放电目标的场景)trail拖尾的方法(同2)粒子系统的方法(性能最差,效果最好,花样最多最省事)本文描述粒子系统的构建方式创建粒子对象在Hierarchy窗口中点击右键 => particle system场景中即可出现粒子对象设置起点和粒子发射形状在Inspector创空原创 2020-06-22 03:19:21 · 11622 阅读 · 9 评论