- 博客(36)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 opengl的坑
opengl窗口、鼠标事件等扩展的发展历程(疑惑于glfw与glut的关系,后面的都可以当做前面的替代品):aux->glut->freeglut->glfw现代OpenGL已经弃用(从OpenGL 3.0开始)经典管线功能(glBegin,变换矩阵,光照,雾,纹理坐标自动生成,等),这些功能可以在需要时由着色器实现。现代OpenGL分为core profile和compat...
2018-11-22 15:32:47
895
原创 The C compiler identification is unknown解决方案
win10系统,VS2015CMake错误:The C compiler identification is unknownThe CXX compiler identification is unknownCMake Error in CMakeLists.txt:No CMAKE_C_COMPILER could be found.引起这个错误的原因是 CMake 找不到...
2018-10-19 16:49:38
28180
原创 vs2015安装时提示“安装包丢失或损坏”解决办法
原因是microsoft root certificate authority 2010、microsoft root certificate authority 2011这两个证书未安装。下载地址以及正确安装的说明:https://download.youkuaiyun.com/download/hjzyzr/10731993...
2018-10-19 14:47:08
22080
1
原创 unity UGUI 优化重点
一、UI元素的 batch batch字面意思即是“一批”、“分批处理”的意思,即把符合条件的UI元素打包成一批让GPU一次性的把他们绘制出来, 这大体可以理解为在1个drawcall内绘制完这批UI元素,这样肯定会比一个一个的让GPU分别绘制效率要低的多。所以在unity p的profile或status中看到的batch的数目越少越好(假如一帧内有100个UI元素,分成50个批次让...
2018-04-11 22:02:21
1861
原创 收藏的博客
关于unity粒子系统的Culling机制离屏渲染时Unity粒子系统的一个Bug控制粒子的飞行方向sprite优化:TexturePacker使用unity做2D游戏的一些建议
2018-01-08 12:03:40
265
原创 TextMeshProUGUI的基本使用方法(资源创建、材质、表情等)
TextMeshPro(以下均简称为TMP)是使用在Unity中的一种强大的文本插件(恩,感觉跟PS差不多了…),在unity5.6时代好像就说要用这个插件来代替unity中自带的Text和TextMesh组件,但现在都unity2017.3了貌似还没把这个插件集成到unity中去。本文就大体介绍一下这个插件在UGUI下的使用方法(即TextMeshProUGUI组件的使用方法)一、组件基本的添加...
2018-01-05 10:43:07
25272
2
原创 unity中EventSystem射线检测结果的排序规则
1、先根据射线发射器进行排序,发射器相同的情况下,再按照被检测物体的SortingLaying进行排序。 2、射线发射器不同时,若发射射线的摄像机都不为空,那么摄像机深度(depth)大的排在前面;如果任一摄像机 为空或者摄像机深度相同,那么就再比较射线发射器的sortOrderPriority进行排序,同样大的排在前面; 如果射线发射器的sortOrderPr
2017-08-30 16:49:07
1701
1
原创 从UGUI源码中想到的UI动态”挖洞”效果的实现(蒙版过滤)
一、需求描述:项目中有时候会用到一些“”挖洞“”效果,比如新手教程出现时,整个画面变暗(蒙版),但是突出突出个别的按钮,供玩家点击,但是别的UI元素不能响应点击事件。常见的做法可能是在最上层加一个蒙版,然后改变需要突出的按钮的层级。这种方法对于层级关系简单的项目还可以勉强使用,但是对于层级关系比较复杂而又有其他的限制的时候就有点捉襟见肘了。这里介绍另一种方法:使用模板测试,可以应对很复杂的情况。效...
2017-08-29 11:25:24
7868
4
原创 unity插件TextMeshPro导入后的一个出错提示的解决办法-Could not load type 'UnityEngine.AdditionalCanvasShaderChannels'
一、问题描述: 在unity assetStore中把TextMeshPro插件导入工程后,在层次面板中创建一个TextMeshProUGUI的文本物体,会立即提示以下错误:TypeLoadException: Could not load type 'UnityEngine.AdditionalCanvasShaderChannels' from assembly 'UnityE
2017-07-19 12:06:08
7870
原创 unity三次样条曲线的简单实现
using UnityEngine;using System.Collections;using System.Collections.Generic;public class Fly : MonoBehaviour{ public List gameOjbet_tran = new List(); public List point = new List();
2017-04-28 00:23:00
3169
原创 一段泛型动态对象池的定义
这个对象池的定义来源于unity asset store 中的HTC VIVE INPUT插件泛型动态对象池。此对象池保存对象的容器是一个泛型栈。这个栈中保存的是没被使用的对象,当外界需要一个新对象时,就从此栈中弹出一个对象以供使用。当对象使用完毕后,此对象将会被压入栈。 对象池还有三个委托类型的变量,分别用于新建一个对象、获取一个对象和释放一个对象。新建一个泛型对象池时需要给构造函数
2017-04-27 10:01:20
1240
原创 unity SteamVR Plugin导入后的两个错误的解决办法
在unity asset store中搜索 SteamVR Plugin,找到官方提供的插件。我当时下载到的版本是1.2.1的,下载完后导入到工程里,打开里面的样例场景(共3个),运行或停止运行时会明显卡顿,报错,其中一个错误:Unity SteamVR: Failed to loadIVRRenderModels interface version IVRRenderModels_005。
2017-03-30 18:26:25
15295
12
原创 OpenGL超级宝典第七版学习笔记-着色器存储块(shader storage block)
20170321-shader storage block1、 shader storage block与uniform block最大的区别是在shader中可以对前者进行写入操作,甚至是对其成员的内存进行原子操作,而后者在shader中是只读的。shader storage block拥有更高的大小上限2、 shader storage block支持std140的布局方式,同时也支持
2017-03-29 05:20:24
3601
原创 OpenGL超级宝典第七版学习笔记-uniform(3)
20170320–uniform(3)1、 uniform块的共享布局(默认布局):效率更好,但是额外工作较多。2、 每个主程序、每个渲染管线阶段所能用的uniform 块的数量是有限制的,可以使用glGetIntegerv()来查询,至于所查询的目标需要给该函数传递如下参数中的一个:GL_MAX_UNIFORM_BUFFERS //每个程序允许的最大数量GL_MAX_VERTEX
2017-03-29 05:18:20
832
原创 OpenGL超级宝典第七版学习笔记-uniform-(2)
20170320–uniform-(2)1、 普通uniform在主程序变得复杂的时候会难以维护与使用,所以引入uniform block。Uniform块可以在不同程序之间共享。2、 Uniform块必须存储在buffer中,你可以通过更改绑定的buffer或直接修改buffer中的内容来设置uniform块。即使在更改主程序后,uniform块还可以继续保持与buffer的绑定关系
2017-03-29 05:17:05
537
原创 OpenGL超级宝典第七版学习笔记-uniform(1)
1、 uniform是一种重要的向shader程序传递数据的手段,其将shader和主程序连接起来。2、 uniform根据声明方式的不同分为普通uniform和uniform块。3、 普通uniform声明格式:uniform intmyUniform;4、 Uniform不能再shader中进行赋值,但是可以在声明时赋予默认值5、 Shader变量名是大小写敏感的。6、 在
2017-03-29 05:15:50
1261
原创 OpenGL超级宝典第七版学习笔记-缓冲区-在缓冲区中填充及复制数据(buffers)
2017-3-28缓冲区-在缓冲区中填充及复制数据(buffers)1、 如果你要放入缓冲的数据是不变的值,那么使用glClearBufferSubData()或者glClearNamedBufferSubData()会更有效率。原型如下:voidglClearBufferSubData(GLenum target,GLenuminternalformat,GLintptr of
2017-03-29 05:09:53
2718
原创 OpenGL超级宝典第七版学习笔记-缓冲区(buffers)(2)
2017-3-28缓冲区(buffers)1、对缓冲区赋值的三种方法:一是指定数据仓库时指定默认初始化值,二是使用gl?BufferSubData()系列函数;三是使用glMapNamedBufferData();2、使用以下两个函数进行对缓冲区进行赋值(写入数据)voidglBufferSubData(GLenum target, GLintptr offset, GLsizeipt
2017-03-29 05:07:28
1568
原创 OpenGL超级宝典第七版学习笔记-缓冲区(buffers)(1)
此系列学习笔记来自OpenGL超级宝典第七版英文版自己翻译而来,此书使用的OpenGL核心的版本是4.5.2017-3-22缓冲区(buffers)1、 缓冲区是线性分配存储的。2、 缓冲区是由名字表示的,OpenGL本质上是使用名字来辨识缓冲区的。3、 在你使用一个缓冲区前,你需要向OpenGL请求一些名字,然后使用这些名字来申请内存,最后向内存中存储数据。这些内存称之为缓
2017-03-29 05:05:59
1253
原创 从网页上打开本地应用程序——Windows下 URI Scheme的使用
一、问题描述:最近做的项目要求从网页端启动本地的应用程序(windows系统下),同时会给应用程序传递某些参数,所以接触到了URL Protocol这个东西。二、所处条件:1、本地的应用程序是unity3D开发的软件。2、目标平台是windows PC端。3、使用AdvancedInstaller制作软件安装包。二、主要问题的解决过程:1、编写注册表处理文件,即*.re
2017-02-20 19:59:17
11310
1
原创 小总结(1)
1、UGUI做UI屏幕自适应:在canvas中将RenderMode 设置为ScreenSpace-Camera,同时将CanvasScaler中的UIScaleMode设为Scale With Screen Size、ScreenMatchMode设为Match Width Or Height、Match滑动条的值设为1,并在UI元素中根据需求设置好参考点及参考位置2、如果UI主界面与实
2017-01-04 09:41:29
513
原创 Vulkan学习笔记(一)-开始
最近刚系统的看完计算机图形学,想深入学一门图形api,正好发现刚出生不久的Vulkan,貌似挺有前景,所以打算学一下,貌似也买不到书,网上教程也不多,发现一处系列教程,网址是https://software.intel.com/zh-cn/articles/api-without-secrets-introduction-to-vulkan-preface,想跟着作者学一遍,敲一遍,本系列学习笔记
2016-12-26 21:50:04
5355
原创 Resources.FindObjectsOfTypeAll过滤掉预设体的方法
一、问题描述:功能模块需要将层次面板中的某一个自定义脚本组件的所有实例保存到一个字典里,脚本里有唯一标识这些组件实例的id,这些脚本中有些在程序开始时是隐藏的,即inactive的,GameObject.FindObjectsOfTypeAll()并不能获取到隐藏实例,但是Resources.FindObjectsOfTypeAll()是可以的,但是Resources.FindObjectsO
2016-11-24 10:01:27
4243
原创 关于unity回放系统的一些实验和参考
一、问题最近在做一个unity仿真培训项目的一个回放功能。这个仿真演练项目中,玩家以第一人称视角进行操作,键盘控制移动,通过鼠标点击场景中的物体进行操作。回放功能要求完全再现用户的整个演练过程,类似于魔兽争霸中的录像回放功能。二、思路1、录制视频。此方法最省时省事,但是录制视频得到的文件太大,在某些场合不允许(比如在线播放,存储空间受限,用户太多等情况)。2、记录事件。以触发事件的
2016-06-22 12:43:04
4483
1
原创 关于unity5鼠标在物体上的检测相关问题
1、鼠标检测事件有OnMouseEnter()、OnMouseExit()、OnMouseHover()。OnMouseEnter()只在鼠标第一次移动到物体上时会出发一次,OnMouseExit()只在鼠标移出物体上时触发一次;OnMouseHover()只要鼠标在物体上会一直触发。2、unity鼠标事件的触发条件:(1)物体有碰撞器,无论是不是isTrigger;(2)物体上的碰撞
2016-06-12 11:18:25
6780
1
原创 unity序列化系统小结-来自unity手册(Script Serialization)
一、综述 在unity中,“东西”的序列化是unity一件很核心的事情,很多特性都是建立在序列化系统之上的:像检视面板、预制体(prefabs)、实例化(Instantiation)、保存场景、加载(loading)、编辑器代码的热重新加载(Hot reloading of editor code)、unity自己的垃圾回收器(Resource.GarbageCollectS
2016-05-05 16:25:42
4048
原创 C#反射学习笔记
一直以来对反射比较感兴趣,最近工作没那么紧张,所以学了一下反射的入门知识。一、对反射的理解。反射,说的通俗一点来讲,就是给某些类、程序集(dll之类)拍个X光,或者做个B超,做完之后,它里面有啥东西,长什么样,状态如何啥都清楚了。那么这个拍X光或者做B超的机器是什么呢?其实,这些机器就是System.Type类里的各种函数,比如GetMethod()之类的,通过这些函数,你可以获取到目标内
2016-04-27 15:51:48
631
转载 转:全面理解Unity加载和内存管理
转:全面理解Unity加载和内存管理(原文链接http://www.ceeger.com/forum/read.php?tid=4394)最近一直在和这些内容纠缠,把心得和大家共享一下:Unity里有两种动态加载机制:一是Resources.Load,一是通过AssetBundle,其实两者本质上我理解没有什么区别。Resources.Load就是从一个缺省打进程序包里的Asset
2016-04-24 23:18:55
395
转载 委托和事件的区别
<a href="http://www.cnblogs.com/kissazi2/p/3189685.html">原文链接:从使用层面上了解委托和事件的区别从本篇文章中,我们将从代码层面知道委托和事件的差异和用处,并且我们不会用猫和老鼠之类奇怪的比喻来混淆大家。首先,我们知道委托和事件都可以用来调用跟自己方法签名一样的方法。容易混淆大家的地方大多在于这两者之间的
2016-04-20 17:10:47
5623
4
原创 关于unity打开非自己原创工程时出现命名空间不存在等错误问题
一、问题描述:今天利用unity的assets server打开别人的工程时,自己的unity中总会报错(无论是在vs中还是monodevelop中(,如system.xml.linq命名空间不存在、system.IO.File.XXfunction()不存在(未定义)等等问题,但是经检查,在引用中都已经引用了相应的文件,函数不存在的地方自己点也会自动提示出那个“不存在”的函数,很奇怪。尝试在
2016-04-19 20:21:46
6264
原创 U3D实验系列之深度测试一(in unity5.2.2)
一、闲话不多扯,先摘几条官方手册关于深度测试的说明:1、ZWrite(On/Off)Controls whether pixels from this object are written to the depth buffer (default is On). If you’re drawng solid objects, leave this on. If you’re drawi
2016-03-07 02:02:45
2281
原创 unity5.2.2自动寻路(navigation)问题
最近做项目时遇到下面这种问题:在Monobehavior脚本A中设置物体B的transform.position,同时由于物体B添加了Nav agent组件和控制寻路的脚本C。在物体B刚开始被激活并随机改变其位置后,会发现其位置并未处在随机获得的位置,而是莫名其妙的产生了一段偏移,很诡异。刚开始并没怀疑是自动寻路组件和直接修改transform.position的脚本互相产生了影响,导致这个诡
2016-03-02 00:25:46
2329
原创 unity实现鼠标让物体绕世界Y轴旋转_C#
//功能实在很简单,放着吧using UnityEngine;using System.Collections;public class rotate : MonoBehaviour { Vector3 StartPosition; //左键按下时鼠标的位置 Vector3 previousPosition; //上一帧鼠标的位置。 Vector3 offset; //在两帧
2016-03-02 00:15:27
8065
转载 c/c++宏定义的基本用法
转自http://blog.chinaunix.net/uid-21372424-id-119797.html一、#define的基本用法 #define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的
2016-01-14 16:47:44
561
转载 关于指针的理解
很多c++初学者对指针,尤其是多维指针是相当头疼的,看了不少文章,感觉下边这篇感觉说的还不错,拿来跟更多人分享。链接http://zhidao.baidu.com/link?url=4P9X2oamPErXXtsbUj2v4WRplRUuBr1io5TLNsqMM7B64UHM0ebbIaWG_IFSeF-YojSkcX2eiMYy3l6GqOHY3K本来不想写什么的,但是看看
2016-01-12 19:41:52
449
原创 数组排序算法
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication15{ class Program { static void Main(s
2015-12-31 18:28:40
272
PHP mb_strlen()的诡异事件
2015-05-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人