自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

冷幽默的博客

记录我的技术爱好:手绘、网站前后端、跨平台客户端、游戏开发、仿真模拟、人工智能。

原创 unity性能优化方法大全
原力计划

优化,老生常谈。游戏的优化和网站、软件优化没有任何不同,除了编码质量和使用技巧以外,都是那些空间<>时间、效果<>性能的老套路。Debug工具介绍StatisticsProfile内存优化【适当的GC(Garbage Collection垃圾回收)】GC有两种触发方式,1内存不足自动触发,2手动触发。首先内存不足时自动GC,经反复测试,并不是很好的办法。因为当...

2020-04-22 16:23:00 142

原创 unity Shader Lab(cg hlsl glsl)着色器入门教程 以及 vs2019 支持unity shader语法(更新中2019.9.5)

shaderlab 是unity封装了cg hlsl glsl的专有着色器语言。具有跨平台的优点。在unity2018.3.5f以后版本,可以使用图形化工具shader graph来简化shader编程成本。作为unityer最好具有基本的shaderlab编程能力。shaderlab语法基本结构//定义shander在unity中的路径和名称,该名称最好和shader文件名相同。Shad...

2019-08-05 16:52:24 2294 1

原创 blender2.8 使用教程 贴图纹理快捷键等。

新版本blender2.8虽然与2.79版本号只差0.01,但却有着天翻地覆的变化。新版本功能更加强大,交互更加人性,但也有不少问题。新版本不仅支持雕塑功能,还支持编辑uv,但是,绝不能用 texturepaint for mac。闪退 闪退 闪退!!!可以看出blender的野心非常大,现在的blender不仅是一个出色的建模工具,还是一个很好的影视工具和游戏引擎2.8 的bug:我觉得...

2019-05-15 15:24:14 9335

原创 unity 七种坐标系统详解与互相转换的方法 模型坐标、世界坐标、观察坐标(视口坐标)、裁剪坐标、屏幕坐标、ui坐标、uv坐标

介绍 unity 总共有四种坐标: 1,鼠标所在的屏幕坐标,只包含x,y值,数据类型是vector2 2,ui坐标,在canvas中的ui坐标。数据类型是vector3 3,世界坐标,三维世界坐标 数据类型是vector3 Unity3D的四种坐标系 【Unity3D的四种坐标系】1、World Space(世界坐标):我们在场景中添加物体(如:Cube...

2018-06-22 13:09:21 5374 2

原创 原生javascript 100行js代码实现一个mvvm框架

一,基础知识1,何为MVVM(双向数据绑定) 双向数据绑定(MVVM):数据(M)发生变化时立即影响视图(V),而视图(V)发生改变也会立即影响数据(M)2,实现数据绑定的方法 实现数据绑定的做法有大致如下几种: 1,观察者模式(backbone) 发布者发布事件,观察者监听事件。当某些方法被触发时,就通知观察者执行预定操作。 观察者可以...

2018-04-23 21:14:51 651

原创 unity3d 基础命令方法技巧干货教程

安装及配置贴 http://blog.csdn.net/lengyoumo/article/details/78723142本帖脚本文件使用c#语言在脚本中获取当前脚本绑定的对象 transform为当前绑定的对象 例: transform.Translate(positionX, positionY, positionZ);在脚本中获取目标...

2017-12-09 03:16:18 3359

原创 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 6

原创 Permission denied(publickey)的解决办法:github/gitlab仓库与本地关联

一 登录git账号git config --global user.email "git上注册的邮箱名"二 生成ssh key打开git bash(也可以加入path)输入这段代码后回车: ssh-keygen -t rsa -b 4096 -C “your_email@example.com”然后按回车会出现以下提示:这个是问你key文件的保存目录。这里需要特别注意,如果你想省事,就不要输入任何字符,直接按回车。否则会出现Permission denied(publickey)的问

2020-07-29 13:11:45 34

原创 VSCode 不支持unity c#项目的自动补全 或 unity debug 插件无效的解决办法

使用文编编辑器打开项目根目录中扩展名为csproj文件Ctrl + F 搜索"TargetFrameworkVersion"关键字,可以看到"v4.7.1"这条信息这说明你的电脑里缺少这个版本的.net Framework去【微软官网】下载相应的版本...

2020-07-29 12:45:56 69

原创 webgl框架介绍以及webgl项目的技术选型问题

废话部分最近面试了很多公司,感慨颇多技术选型是重中之重,应该是所有企业的共识,这不仅关于到当前项目的交付,也涉及到未来项目的生命线和前景。但就有人当儿戏。不管是什么技术,选型决策者都应该具备开阔的技术视野。有个前辈曾对我说过,什么事情最好亲自尝试,知道和做过,是完全两个不同的概念。所以也推荐选型的项目管理人员应该亲自调研,以免造成损失。有些公司明显因为技术选型的问题把项目带进的不上不下的境地。让我印象最深刻的就是前些天遇到一家专做交通规划的公司,选了一个不合适的技术栈全家桶,项目进行到中期整个技术部

2020-07-26 10:32:41 122

原创 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 154

原创 游戏数据传输帧同步中,自定义浮点(float)、二维向量(vector2)、三维向量(vecter3)、四元数(Quaternion)的数据类型的实现

由于帧同步需要各客户端的浮点数不能出现误差,所以需要使用经过处理过的浮点数。不只是浮点数本身,所有基于浮点数实现的数据类型都要经过处理,包括Vector2、Vector3、Quaternion等等由csharp代码实现,直接拖入unity可直接使用自定义浮点数类型:mFloat// 添加该标签可以保证该数据类型可以被json等工具正常序列化[Serializable]class mFloat{ // 存储中会使用的真实值 public int realValue = 0; //

2020-07-13 11:57:01 96

原创 网络游戏数据同步的实现 一:状态同步、帧同步的基本原理概述

网络游戏,最重要的部分应该就是数据同步了。一个游戏的数据同步质量,直接影响这个网游的操作体验。做出一个一步一卡的游戏,一定会成为其最大的槽点。记得我当年最早玩的网络游戏《传奇》,那真是处处可卡bug满天飞,,,即使是这样,大家仿佛觉得这卡顿是天经地义的,面不改色的接受这种摧残。。。除了服务端的硬件投入以外,数据同步方式的不同也直接会影响性能。拿时下比较火爆的几个网游为例,数据同步方式大致分为以下几种:操作同步。信息同步。3。 3...

2020-07-13 01:15:28 220

原创 unity 使用粒子系统 实现一个火焰燃烧效果
原力计划

早在去年,我就打算写一套特效教程。但苦于生计,一直也没时间。希望新工作能多给我留点时间吧。哎。准备工作。本教程素材需要自己制作,需要的工具是ps、shader、unity。有不会的没关系。跟着步骤走就可以。步骤一:制作火焰素材制作素材我们只需要ps软件。进入软件后,首先删掉默认图层。使图片背景透明。打开ps后,点击左侧工具栏的钢笔在画布上拖出一个泪滴形状然后在图层窗口中点击路径选项卡,就能看到路径的图层了:然后用鼠标右键点击路径图层,就弹出了这个东东:点击建立选区选项,弹出选取设置窗口

2020-07-05 08:48:33 290

原创 unity 多种角色控制方式介绍 以及 CharacterController角色控制器详解
原力计划

操作主人公,我们一般有以下几种办法使用物理引擎操控直接操作坐标使用角色控制器1. 使用物理引擎操作物理引擎操作的好处是可以使用诸多物理特性。当游戏有大量碰撞或移动特性时,使用这个比较好。比如赛车游戏。你可能需要设置赛车的重量来决定过弯的表现和撞车时力反馈的计算,又或是爆炸时被波及的力度。使用物理引擎操作的主要方式就是添加力。由此可知,向前移动就是添加向前的作用力,跳跃就是添加向上的作用力,物理效果会让人物跳跃后自动下降。【操作】首先先点击物体,在inspector面包中点击add co

2020-06-30 14:14:33 843

原创 unity particle system 粒子系统 制作闪电放电效果
原力计划

unity 粒子系统制作闪电制作闪电效果的方法有以下几种:2d动画方式(适合2d游戏的背景或范围技能,性能最好,效果看设计师水平)LineRenderer划1线的方法(可以动态设定起点和终点,适合需要指定放电目标的场景)trail拖尾的方法(同2)粒子系统的方法(性能最差,效果最好,花样最多最省事)本文描述粒子系统的构建方式创建粒子对象在Hierarchy窗口中点击右键 => particle system场景中即可出现粒子对象设置起点和粒子发射形状在Inspector创空

2020-06-22 03:19:21 290

原创 unity hub、官方文档、assetstore插件商店 相关官方资源下载地址

Unity 官方下载地址https://unity.cn/releasesUnity Hub 版本管理器https://store.unity.com/cn/download?ref=personalUnity Manual 官方文档、Api说明https://docs.unity3d.com/Manual/index.htmlUnity版本区别、订阅通道https://store.unity.com/cn/compare-plansUnity 官方资源商店地址https://assets

2020-05-26 17:06:37 50

原创 使用unity内置的JsonUtility方法 处理json数据

json,一种非常流行的数据格式。json最大的功劳在于取代了xml,做过职业采集的人大概会明白我说的是什么意思,哈哈哈。在游戏的存档、更新、数据传输过程中都需要一个高效、易读、紧凑的数据格式。从各种角度来说json都是最好的选择。在unity中我们可以使用内置的JsonUtility方法来轻松的实现json字符串与c#对象的互转。创建json对象结构使用Serializable语义可以使类可以被序列化。多个类层级调用,就相当于json的多层数据。下面代码定义了一个2层的json数据结构// 二层

2020-05-17 05:09:08 107

原创 开启ssl支持https的教程 (阿里云)及 显示“非安全连”的解决办法
原力计划

帮朋友配置个服务器。为了我的时间和生命,我还是把这个详细写出来吧。省着再再再再再再再再再再再问我准备工作首先当然是环境都弄好了。安装好php全家桶,nginx选好相应的版本,安装好ssl(一般集成环境里面有。开启就完事了)案例的服务器配置是:阿里云服务器 * 1centos6.5(为啥这么老)php5.6,mysql4.9nginx1.17.1(为啥这个这么新)openssl 1.0.1e这几样的安装方法网上一抓一大把,这里我就不复述了比较重要的是openssl成功开启后在phpinf

2020-05-16 14:13:16 80

原创 算法:非暴力算法求一个数组中重复次数最多的数 js实现

某公司前端面试题。哎。问题:已知一个数组,求里面重复次数超过 数组长度/k 的数var C = [9, 2, 5, 2, 4, 3, 3, 9, 6, 3, 4, 4, 3, 5, 0];function getSame(_a) { let k = _a[0]; let a = _a.slice(1); let b = []; let count = 0;...

2020-05-07 23:41:59 103

原创 算法:非暴力算法求两数组中最小差 的算法 js实现

某个公司的前端面试题。话说我也是走投无路,其他职位实在不好找,竟然回头去看前端开发。我倒不是不想做前端,只不过觉得有负我这两年的所学啊。哎!!!!问题:已知a、b两个数组,求两数组成员中最小的差。js答案:时间复杂度mn的算法实现var A = "5 1 7 5 3 10";var B = "4 2 9 6 3";function getMinus(a, b) { get...

2020-05-07 23:38:24 189

原创 游戏热加载、即时加载、热更新、热补丁原理流程图

本文主要阐述游戏及软件工程中的更新原理及流程,具体代码请查看本博webgl在线加载资源和xlua热更新热加载的实现流程所谓热加载,就是将资源放在服务器端,当客户端运行时,即时下载指定的资源文件并应用在程序中。拿unity项目为例,大致流程为:发送需要的资源包名发送资源启动客户端服务器运行需要热加载的资源继续运行加载资源时,可以选择异步加载,这样就不会用等待,该干嘛干嘛。也可以选择同步加载...

2020-05-04 13:41:56 160

原创 unity Application 本地目录资源路径详解 Application.StreamingAssetsPath、Application.PersistentDataPath等

unity目录这里的unity目录指的是程序打包发布后,程序自带的目录结构。说到目录,那就一定是与资源相关了。知道各个目录的特点和用途,才能架构根健壮的项目结构。目录介绍Application.StreamingAssetsPath:普通资源目录【读写权限】:pc可读写,移动端只读【功能特点】:不压缩,外部可访问资源内容【Editor路径】:Assets/StreamingAsse...

2020-04-29 03:57:10 298

原创 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 118

原创 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 109

原创 unity 静态网格合并、动态网格合并、材质合并,保存网格资源

合并网格的目的为了方便Call Drall 静、动态批处理优化为了方便模型部分更换、换装合并网格的几种方法1 静态物体自动合并所有被设置为静态的物体都会被合并【方法&步骤】点击物体 -> Inspector窗口 -> static...

2020-04-23 12:13:59 250

原创 unity debug优化工具之 Statistics舞台统计 介绍

这些工具还包括渲染统计窗口( Rendering Statistics Window )、性能分析器( Profiler ) ,以及帧调试器( Frame Debugger )Statistics 数据统计工具【启动方法】:Scene > Stats参数介绍Audio 音频【Level】:音量【DSP load】:DSP数字音频处理技术【Clipping】:剪辑播放进度【S...

2020-04-22 03:05:09 52

原创 普通渲染管线的shader转为LWRP/HDRP可编程渲染管线shader的2种方法

安装好LWRP或HDRP后,原有的shader就不能用了。需要转换成适用于可编程管线的shader才可以第一种方法:使用可编程渲染管线自带的工具自动转换点击工具栏 > Edit > RenderPipline > Upgrade Project Materials to …即可转换项目中或所选的shader。第二种方法:手动修改shader有时某些shader无法进行转...

2020-04-20 10:53:33 336

原创 unity中shader Inspector 面板 的ui编写实现方法
原力计划

一 Properties 类型首先介绍下shader的属性类型,Properties属性会暴露给unity 的 inspactor面板,相当于程序接口属性的结构:_CG变量名 (“unity可见的变量名”, 属性类型) = 值例:_Color (“My Color”, Color) = (1, 1, 1, .5)属性表类型说明属性值Int整型(.1, 2)...

2020-04-20 10:52:20 193

原创 unity reflaction probe 物体表面反射周围环境光 使用步骤

用途使表面光滑的物体反射周围的环境光。适用于玻璃、金属、塑料等材质。步骤创建反射区域:工具栏 > GameObject > Light > Reflection Probe设置该物体的Reflection Probe组件,然后点击其中的Bake按钮进行烘焙创建反射物体,给物体指定带有Smooth属性的Shader,并将值设为1...

2020-04-12 18:13:26 135

原创 unity 3d中关于贴图、高光贴图、OA贴图、OCC贴图、凹凸贴图、法线贴图、 Ambient Occlusiont OA贴图介绍和使用步骤教程

基础介绍diffuse map 漫反射贴图将平面图像福附着在3d模型上,使模型的像素按uv坐标显示贴图上的颜色信息,从而使模型拥有跟多的细节。漫反射贴图包含物体最基本的色彩信息Specular maps 高光贴图高光贴图是用来处理当光线照射到模型表面时像素表现的Ambient Occlusiont OA贴图 很重要环境阻塞贴图,是一种通过计算物体间的距离,并根据距离产生一个8位的...

2020-04-12 17:38:49 710

原创 unity shaderlab 深度图相交高亮应用:护盾/能量场交界高亮特效

笑狗图效果原理及实现步骤利用深度图获取两个模型相交位置并进行处理【实现步骤】获取屏幕xyz坐标根据屏幕坐标找到缓冲中已存在的像素的深度信息对比当前像素的深度信息很缓冲中像素的深度信息,如果在一定范围内,就说明有重合修改颜色。shader代码Shader "Kaima/Depth/ForceField"{ Properties { _RimColor("Rim Co...

2020-04-09 10:39:44 106

原创 unity shaderlab 毛玻璃效果 周围发光效果 代码+详细注释

笑狗图实现原理将像素的法线和 从镜头到像素位置的方向 转为世界空间坐标计算镜头到位置方向 和 法线的夹角最终像素输出的颜色 = 夹角 * 颜色效果适用范围适用于穿透显形毛玻璃Shader代码Shader "Custom/Depth" { Properties { //贴图入口 _MainTex ("Texture"...

2020-04-06 14:26:16 106

原创 unity shaderlab 深度图的实现过程 代码+详细注释
原力计划

深度图,通过获取观察视角中,物体由近到远的深度信息,来实现与其相关的特殊效果。比如获取像素深度信息深度值是在像素信息中保存的[0,1]范围的非线性值,这些深度值来自裁剪坐标。在延迟渲染中,由于先经过深度测试,所以缓存中已经有了深度信息。在向前渲染中,由于还未经过深度测试,所以必须通过申请取得深度信息。Unity会自动利用Shader Replacement将RenderType为Opaq...

2020-04-05 15:35:16 82

原创 计算机图形学数学之矩阵运算(加减乘除、矩阵的平移、旋转、缩放、滤波等)shader实现

矩阵的加、减法两个矩阵必须规模相同[123456]+[123456]=[1+12+23+34+45+56+6]=[24681012]\begin{bmatrix}1&2\\3&4\\5&6\end{bmatrix}+\begin{bmatrix}1&2\\3&4\\5&6\end{bmatrix}=\begin{bmatrix}1+1&2...

2020-04-01 14:47:20 107

原创 计算机图形学常用的数学方法之 角度弧度与三角函数

假设三角形的三条边分别为a、b、c,而他们的对角分别为A、B、C正弦定理【公式】asinA=bsinB=csinC=2r=D\frac{a}{sinA} = \frac{b}{sinB} =\frac{c}{sinC} = 2r=DsinAa​=sinBb​=sinCc​=2r=D【用途1:已知三角形的两角与一边,解三角形】假设已知角A、B与边a,求c边长假设已知角A、B与边a,求c边长假...

2020-03-31 13:48:17 109

原创 unity C# 脚本控制Material、Shader的方法 以及问题解决
原力计划

脚本控制shader的设置方法 // 设置贴图 Texture mTexture = Resources.Load("myTexture", typeof(Texture )) as Texture; material.SetTexture("_MainTex", mTexture ); // 设置整数 material.SetI...

2020-03-29 09:49:53 827

原创 unity shader 实现延迟渲染代码加注释
原力计划

正向渲染与延迟渲染都是关于光照计算的渲染方法。他们的最终目的都是进行光照处理。他们最大的区别是正向渲染先计算光照信息再处理深度计算。而延迟渲染正相反,先进行包括深度在内的着色计算,再处理光照计算。https://www.jianshu.com/p/80a932d1f11ehttps://blog.csdn.net/yangxuan0261/article/details/90182143一 ...

2020-03-27 17:10:44 308 1

原创 qt特殊的打包问题 Qt libstdc++-6.dll 无法定位程序输入点于动态链接库 应用程序无法正常启动(0xc000007b)等等

问题描述debug时运行正常,release打包时遇到 libstdc+±6.dll 无法定位程序输入点于动态链接库 应用程序无法正常启动(0xc000007b)等问题。 一般情况来说,就是库的问题,输出的程序没有对应库位数版本等问题等。网上的解决贴子很多,基本都能解决。如果还是无法解决就可能是遇到和我相同的情况了。解决办法查看系统是否安装了依赖qt库的其他软件。比如anaconda的py...

2020-03-23 07:10:34 202

原创 unity shaderlab 颜色渐变效果 代码+注释
原力计划

原理两色渐变如图,在uv坐标系中像素(x,y)的取值范围是(0,0) - (1,1)设置_pos1的值作为区域限制,取值范围(0,1),然后判断当前像素的y值是否处于0-_pos1的区间,如果是就替换为_color1 - color2的过度色,否则就直接使用_color2的颜色_color1 - color2中的过度色,由0 -_pos1的比值定位,注意uv坐标系中左下角是原点右上角是重...

2020-03-21 07:25:02 155

提示
确定要删除当前文章?
取消 删除