unity
文章平均质量分 83
popcorn丶
爱玩游戏,研究游戏玩法
展开
-
c# string字符串连接原理
string 的几种连接操作,以及源码介绍原创 2022-09-14 01:12:09 · 1092 阅读 · 0 评论 -
骨骼动画原理
游戏制作中,从游戏开始到现在,动画的发展经历了一个一个的阶段,效果逐渐越来越真实自然流畅。但是复杂度也越来越高。作为游戏钟不可或缺的重要模块,下面我将以unity为例聊一下,动画是怎么一步一步发展过来,以及骨骼动画的设计初衷,内部数据表示以及原理。...原创 2022-06-05 20:11:45 · 3100 阅读 · 2 评论 -
unity图像压缩算法原理
概述在计算机图形学中,存在许多纹理压缩方案。压缩既减少了纹理内存占用,又降低了使用纹理的带宽要求。本文中,“纹理压缩”与“图像压缩”不同,因为纹理压缩方案的设计允许作为纹理采样的一部分进行有效的随机访问。“图像压缩”可以通过将图像视为一个整体来进一步减少图像冗余,但这样做对于有效的纹理访问操作是不切实际的。本文主要介绍几种unity当前主流的图像压缩算法,并给出推荐理由。unity图像压缩算法原理概述目的术语算法S3TC1. BC1 with no alpha2. BC1 with alpha3. B原创 2021-09-29 01:54:18 · 4310 阅读 · 2 评论 -
JPS寻路算法优化思路
当寻路算法成为瓶颈的时候,可以看看JPS算法是怎么解决寻路过程中的性能问题的原创 2021-09-12 02:13:36 · 2889 阅读 · 2 评论 -
c# 深入理解static const readonly区别
c# static const readonly是很类似的字段,内存占用,读写权限,原理机制都有很大的不同。原创 2021-04-16 23:15:26 · 353 阅读 · 0 评论 -
c# dll程序集元数据概述
c# dll程序集概述什么是程序集PE文件元数据组成元数据定义表引用元数据表清单元数据表程序集是一个或多个类型定义文件以及资源文件的集合。程序集是进行重用,版本控制和应用安全设置的基本单元,它允许将类型和资源文件划分到单独的文件中。这样一来无论是自己还是程序集用户都可以决定打包和部署哪些文件。原创 2021-04-11 15:29:34 · 1344 阅读 · 0 评论 -
unity死循环,无限内存增长的调试方法
1.附加到unity2.程序复现,运行到死循环的地方3.在VS上点击暂停3.打开调试->窗口->线程 窗口:4.找到多有线程的运行状态,找到对应的线程,一般主线程是第一个,看看执行到了那里,就能知道,死循环发生在哪里了。一般死循环伴随内存无限的增长...原创 2021-03-15 17:38:35 · 1470 阅读 · 2 评论 -
unity throw抛出异常失败,正常的错误也无法正常打印问题
在ui初始化的时候,有如下代码,或者其他异常 public override void GetUI() { int a = 0; int b = 1 / a; m_ShoppingBottomImage = GetUI<Image>("ShoppingBottomImage"); m_LeftTime = GetUI<Text>("ShoppingTopImage/LeftTime"); m_LeftMoney = Ge原创 2020-10-27 11:05:25 · 1131 阅读 · 0 评论 -
Unity在android环境下profiler的方法
Profiler在Editor模式就可以观看性能消耗,但是毕竟电脑配置高,跟手机真机环境还是有区别。实际开发中的优化还是推荐用真机测试。因为IOS一般比Android手机的配置高,在Android平台做好优化一般在IOS也没太大问题,下面介绍Profiler连接Android真机调试。 1 Android设备设置: 手机开启开发者模式和USB调试 2 Building Settings设置:Building Setting勾选Development Build 3 安装app ...原创 2020-08-10 16:28:28 · 1590 阅读 · 1 评论 -
unity贴图矩阵运算(旋转平移缩放)
我们在shader中对贴图处理时,有时候会有一些比较复杂的运算,比方说三角函数,开方等,一般情况下,如果可以在约上层做运算,性能会越高。C#> Vertex > fragment因此,考虑到贴图的旋转用到的三角函数,可以使用在C#中传入旋转矩阵得到,然后使用uv直接乘以矩阵就可以了。封装了vmatrix4x4,分享一下:using UnityEngine;namespace D11.Skin{ public class VMatrix { p.原创 2020-07-17 12:48:37 · 623 阅读 · 0 评论 -
unity 正态函数随机算法
using System;using System.Collections.Generic;using UnityEngine;namespace D11.SkinEditor{ public class UniformRandom { private const int NTAB = 32; private const int IA = 16807; private const int IM = 2147483647; .原创 2020-06-28 11:38:51 · 1076 阅读 · 0 评论 -
unity shader变体之#pragma multi_compile 和 #pragma shader_feature
shader为什么需要变体: 写shader的人,都知道要减少if条件分支语句的使用,原因在于,当你的shader执行一条指令的时候,并不是操作一个像素,而是同时操作一组像素,并一条一条指令向下执行。如果if的两条分支都有可能执行,那么执行的逻辑就是两条分支的和,因此当if条件中仅有uniform变量和常量组成的时候,if的选择是固定的,if不会两个条件都走到,那么也就没有性能问题。但是实际问题并不是所有的条件语句都是确定性结果的,大多数我们执行的时候是需要判断动态的结果的,那么怎么办,u...原创 2020-06-20 15:51:09 · 4874 阅读 · 0 评论 -
Unity URP中的Post-processing
在Unity中,你可以选择不同的渲染管道。渲染管道执行一系列获取场景内容的操作,并在屏幕上显示它们。在高水平上,这些操作包括:Culling,Rendering,Post-processing。不同的渲染管道具有不同的功能和性能特征,适用于不同的游戏、应用和平台。Unity提供了以下渲染管道:内置的渲染管道:Unity的默认渲染管道。它是一个通用的呈现管道,只有有限的定制选项。 通用渲染管道(URP):一个可编写脚本的渲染管道,可以快速、轻松地定制,并允许您跨广泛的平台创建优化的图形。原创 2020-06-19 01:56:52 · 13167 阅读 · 8 评论 -
unity shader中常用的几种texture纹理blend混合方式
最近在做一个武器皮肤的系统,为了让每个玩家都获得一种独一无二的武器,我们决定给皮肤做变体生成,那么这张皮肤就不能直接用一张美术给的贴图,而要通过一些可变的参数,让每个皮肤产生不一样的效果。因此我们需要使用多张不一样的贴图根据一系列参数,混合成一张皮肤贴图。但是混合的方式多种多样,怎么才能实现比较好的效果呢,经过一段时间的学习跟实践开发,以及对一些其他游戏的研究,大致纹理的混合有以下的一些方式:方式一: 最常见的混合方式就是alpha混合,通常alpha混合的是带透明度的物体:...原创 2020-06-06 16:24:48 · 4728 阅读 · 0 评论 -
Unity资源加载方式示例
但凡学习unity的小伙伴,都难免要跟unity的资源打交道,但是过段时间不用就容易忘记,我也是,因此特地整理一下经常用的资源加载的方式,已供大家跟自己在以后查阅。方式1:Resources.Load这也是很常用的一种方式,不管是在运行期,还是在编辑器下,都是可以使用的。unity官方给了下面几种示例:// Load assets from the Resources folder. Ignore other named and typed assets.using Uni...原创 2020-05-26 23:50:37 · 1094 阅读 · 0 评论 -
unity shader渲染状态的设置
在pass中,我们可以设置一些渲染状态:culling 与深度测试阶段: culling与深度测试是为了减少没必要的overdraw的,大大减少像素着色器的计算量。Cull 控制哪一面将会被剔除:Back,不渲染多边形背面(默认) Front,不渲染正面 Off,都不剔除,两面都渲染ZWrite 控制是否需要写入深度缓存,默认开启,一般渲染半透明物体的时候关闭 ZTest 控制深度测试怎么测试,默认为LEqual ZTest Less | Great...原创 2020-05-17 17:35:55 · 1266 阅读 · 2 评论 -
unity shader中关于Tags的整理
在我们写unity shader的时候经常会遇到要定义一些shader tags的时候,但是又不能知道到底要设置哪些状态,有哪些状态可以设置,每次都要去网上搜索,感觉很麻烦,因此特地整理了一下,以便以后需要用的时候查阅。Unity shaderLab 中的Tags一起包括2类:ShaderLab: SubShader Tags ShaderLab: Pass Tags Own tags 一个是定义在subshade中的Tags 一个是定义在Pass中的Tags,以及可以使用自定义...原创 2020-05-17 15:59:49 · 2383 阅读 · 0 评论 -
unity跨平台原理
一直以来很好奇,为什么unity可以跨平台开发,用了这么久还是有必要弄清楚的,所以今天特地研究了一下,记录下来,也供大家学习。Unity介绍:Unity3D主要包括两个部分:Unity Engine和Unity Editor。提供了UnityEngine.dll和UnityEditor.dll两个动态库。Unity Engine:C/C++编写,由平台相关代码,图形A...原创 2020-03-26 00:06:18 · 2790 阅读 · 1 评论