Unity3D
文章平均质量分 72
理塘顶针
相信美好
展开
-
升级版GPUInstancing
1. 痛点昨天在CS的博客笔记里我琢磨了下DrawMeshInstancing,有提到他一次draw最多支持1023个,在多就要加drawcall,此外如果是动态数据还要每帧向GPU索要数据并在CPU端更新网格坐标,因此有如下两个痛点:多于1023个坐标就要切分数组,加drawcall,1023*1024个物体就是1024个drawcallGPU和CPU数据每帧传递浪费时间下面就有一个新的方法来解决以上痛点,u1s1,百度出来的资料真的是不行,还是要科学冲浪。api:Graphics.Draw原创 2021-05-19 14:06:16 · 1235 阅读 · 4 评论 -
unity计算着色器入门
做实验需要使用高性能计算,因此翻出来学习一下用法。计算着色器(Compute Shader简称CS)的用途就是并行计算,适用于算法简单但数量庞大的算法应用场景:液体模拟,布料解算,聚落模拟等。下面尝试做一个CS的demo之前在yt上看到一个CS的应用,效果非常帅使用类似于体素的方法来渲染一张“假”屏幕,相当于一个三维的屏幕,很有全息投影的既视感。原理不难想,生成X*Y个Quad组成一张假屏幕方阵,使用两个摄像机,一个主摄像机用于正常观察,另一个摄像机用来渲染深度图,最后将深度图信息映射到假屏幕原创 2021-05-18 16:53:08 · 1536 阅读 · 0 评论 -
shaderlab 屏幕后处理
来自Unity Shader入门精要一.调整屏幕亮度、饱和度和对比度unity屏幕后处理的原理是将渲染好的场景作为一张屏幕大小Quad的Texture,贴在屏幕上,然后允许用户自定义该Quad的Shader,将Shader依托给该Quad的Material来实现后处理效果。创建该Material的方法 protected Material CreateMaterial(Shader shader, Material material) { if (shader == n原创 2021-03-18 15:13:40 · 562 阅读 · 0 评论 -
Shaderlab 玻璃效果
Shader "Custom/MyGlassShader"{ Properties { _MainTex ("Main Tex", 2D) = "white" {} _BumpTex ("Bump Tex", 2D) = "bump" {} _Cubemap ("Environment Cubemap", Cube) = "_Skybox" {} _Distortion ("Distortion", Range(0, 100.原创 2021-03-11 15:38:36 · 600 阅读 · 0 评论 -
shaderlab Billboard公告牌
去年疫情+部分私人原因搞的我人都要自闭了还是得好好学习,别想那有的没的,希望现在止损还来得及代码看的unity shader入门精要代码// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Custom/BillboardShader"{ Properties { _Color ("Color", Color) = (1,1,1,1)原创 2021-03-02 22:17:41 · 310 阅读 · 0 评论 -
用四叉树加速碰撞检测
长话短说一.Define Quad Tree四叉树的作用就是从原点开始根据一定的范围画出周围的四个象限,然后每个子象限继续划分为四个孙子象限,以此类推,到达递归深度最大值时停止。二.在碰撞检测中的作用如果场景里有1万个障碍物和1个子弹,那么子弹需要和每个障碍物进行一次碰撞检测。而我们进行了空间划分之后,只需要将子弹与其所在的区域内的障碍物进行检测即可。相当于将碰撞检测分成了两部分,第一部分(粗测)尽可能将不会碰到的物体扔掉,从所有的物体中筛选出与子弹最接近最可能碰到的物体,第二部分(精测)使用尽原创 2020-10-04 21:25:53 · 2438 阅读 · 1 评论 -
消消乐游戏原理(附部分代码)
在vs里看见一些方法上次修改是501天以前,乖乖,为了复试我也算是把陈谷子烂芝麻都翻出来读了。一.存储格子+格子哈希表[id],格子的属性:x,y,id,type其中id=x*10+yx=id/10y=id%10type代表格子属于什么类型,相同的3个相连可以消除比如一个9*9的棋盘,x横轴,y是纵轴8 18 28 38 48 58 ...原创 2019-03-17 22:46:12 · 19456 阅读 · 6 评论 -
工业仿真教学演示类游戏的抽象工厂框架设计(附部分代码)
马上复试了,拿出一年前写的项目们出来看看,整理下思路,因为都快忘干净了,而且我很菜。时间有限,不知道自己还能总结成什么样子。当时写框架的时候需求还不确定,来回变,我写完后就加入考研大军了,没怎么再修改,所以现在回头来看会觉得框架非常繁琐,辛苦接手的兄弟了,让我写了3个星期就白捞了2000大洋....这个东西说白了就是一种电器动作实验模拟,你需要在一堆按钮扳手中移动摄像机(固定的 )找到先按...原创 2019-03-15 21:55:20 · 882 阅读 · 1 评论 -
unity界面和代码分离解决方案
新手或者小规模的游戏喜欢使用SetActive或者Instantiate prefab来切换界面,这样可以,但是不灵活,也不规范,碰到大量代码的时候就会力不从心。所谓界面与代码分离也就是将界面用代码封装起来,再通过一个管理器来控制,方便其他程序的调用和控制介绍一下大体设计方法,让大家有一个宏观的观念界面一共分为两种 1.Panel 面板 比如登陆面板,注册面板,进入游...原创 2019-06-10 21:10:12 · 3608 阅读 · 0 评论 -
unity战棋类游戏移动范围搜索算法设计(未优化)
SLG战棋类游戏有很多细分类,本次博文讲解的是军事型的,类似高级战争2,有很多军事单位,建筑,同时还有多种地形,例如坦克不能爬山,步兵不能下海,树林的移动力消耗要远大于平原,公路最快.....等等一系列复杂设定。这里我们设,平原移动力消耗为2,建筑为1,公路为1,基础步兵的移动力为5(不考虑油量,每回合移动力都是5)基础的二维坐标类为Point大约需要三个类 ...原创 2019-06-10 21:09:32 · 6773 阅读 · 4 评论 -
简单unity协程优化方案
做三消项目需要做一个提示用户哪个格子可以消除的功能,需要对整个棋盘进行遍历。原来没用协程的代码public void GetTip(){GameObject go1, go2; int[] way = { 1, -1, -10, 10 }; int max = (xl - 1) * 10 + yl - 1; for (int x = 0; x原创 2017-09-07 22:10:12 · 1993 阅读 · 1 评论 -
unity本地分数排行榜简单解决方案(Json)
具体效果大体方法:创建一个分数类Score和一个分数类的容器List,和一个json.txt用来存储所有的分数(最多显示10条分数)。进入主菜单时读取txt将分数全部读到list中,当用户点击排行榜显示按钮时从list中加载出来;在游戏中结算分数时实例化一个分数类并Add到List中,并排一下序,把分数最小的元素Remove掉(一拍大腿,为什么不用优先队列呢!!不过那得自己实现),并输出到原创 2017-08-28 20:29:53 · 14014 阅读 · 8 评论 -
unity简单的聊天socket编程
最近开始自学socket编程,从网上找不到好的教程,索性搬了个梯只,刚开始学习,水平有限,见谅窗口布局Asset这里我们既当Server也当Client,所以把两个代码都加载上,放到Server这个空GameObject上这里聊天信息弹出的思路是在chatWindows上加上然后接受到聊天信息之后将data放到asset下的prefab里实例化...原创 2017-05-21 16:10:31 · 2490 阅读 · 0 评论 -
unity连接SqlServer
前段时间项目需要用到数据库,就提前自学了一部分数据库的内容,比着MOMO大神的教程http://www.xuanyusong.com/archives/2326封装了一个可以操作SqlServer数据库的基类,自己加了些注释,都测试过了。可以使用,使用前记得把数据库的ip和数据库名改成自己的。在unity里调用的话只需要new一下再通过这个对象访问就可以了。以后我还会继续维护这个基类usi原创 2017-05-21 16:32:39 · 948 阅读 · 4 评论 -
unity简单自由漫游摄像机控制脚本
“幽灵视角”,适合用来漫游场景把代码加载到摄像机上using System.Collections;using System.Collections.Generic;using UnityEngine;public class Control : MonoBehaviour { public float zoomSensitivity = 10f; pub...原创 2017-05-29 14:12:23 · 6531 阅读 · 0 评论 -
unity标准资源包FirstPersonController的分析
1.鼠标转动基类MouseLook,负责处理鼠标转向和准星是否锁定,这个比较简单using System;using UnityEngine;using UnityStandardAssets.CrossPlatformInput;namespace UnityStandardAssets.Characters.FirstPerson{ [Serializable]原创 2017-05-29 14:54:29 · 5562 阅读 · 1 评论