在做游戏开发时,场景中的三角面和顶点数影响着运行效率,尤其是在手机平台上,实时的知道场景中的各项指标,对性能优化来说至关重要,下面我们来实现一个小功能,来实时计算场景中的三角面和顶点数: 如果要知道场景中的三角面和顶点数,首先我们要得到场景中所有的物体,如下: GameObject[] ob = FindObjectsOfType(typeof(GameObject)) as GameObject[]; 其次,在我们得到的这些Gameobject中,有的含有MeshFilter 有的不含有,我们…
大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 在<仙剑奇侠传>.<古剑奇谭>等游戏中,常常须要玩家在一个3D场景中选取场景中的物体.比方为我方角色加入状态.为我方角色添加血量.选择要攻击的敌人等,通常我们使用鼠标来选择一个目标物体,当鼠标移动到目标物体上时,目标物体将显示轮廓线,此时就表示当前物体被选中,我们能够在此基础上为游戏物体进行一系列的操作.那么,这一功能怎样在Unity3D中实现呢?首先我们能够将问题分解为两个…
Unity 在底层默认希望为你做尽可能多的优化,降低使用门槛,比如 BuildSetting 中的 Optimize Mesh Data 选项就是一个典型的例子. 这个选项到底有什么用呢?文档描述为: Optimize Mesh Data Remove any data from meshes that is not required by the material applied to them (tangents, normals, colors, UV). 即是说:如果开启了此选项,将会在…
先说一下我遇到的问题,我弄了一个对象池管理多个对象,对象池绑定在一个GameObject上,每个对象在OnBecameInvisible时会进行回收(即移出屏幕就回收),但是当场景切换或停止运行程序时场景中如果还有待回收的对象,就会报错,报错显示的信息为,我的对象池GameObject已经被销毁了云云,因为回收的对象我会把他们作为绑定了对象池的GameObject的子级来方便管理. 所以唯一的可能就是脚本方法调用顺序不可控,即不同GameObject的OnBecameInvisible在其它Ga…
通常我们使用Button都是在UI界面,即NGUI的摄像机下,如果想换到场景中,即不让按钮以UI形式显现,而是和场景中的物体一起随着摄像机移动而缩小,放大. 很简单,把Button从NGUi的摄像机中拖出来,并改变Button所在的层与NGUI照射层不同,或者让主摄像机的Culling Mask照射到Button所在的层都可. 调整Button的大小,旋转,即可. 注意:如果你使用的NGUi自带的UIButtonMessage脚本传值,那么当你的Button不被NGUI的摄像机照射,或不属于同一…
池管理类有啥用? 在游戏场景中,我们有时候会需要复用一些游戏物体,比如常见的子弹.子弹碰撞类,某些情况下,怪物也可以使用池管理,UI部分比如:血条.文字等等 这些元素共同的特性是:存在固定生命周期,使用比较频繁,场景中大量使用. 所以,我们就通过池管理思路,在游戏初始化的时候,生成一个初始的池,存放我们要复用的元素, 当要用到时,从池中取出:生命周期结束,放回到池中. 代码 这个池的参数有两个:1池中存放的元素 2 池的初始容量(如果池不够了,则会按照这个容量进行扩展) 代码如下 using S…
这篇文章的应用场景是这样子的: 首先我们要做的是一个带有LBS定位服务(比如高德地图.百度地图等)AR功能,在这个场景中,会有一些地图上的”点“(如派出所.学校)是我们需要显示在我们的AR镜头上的,如下图: 图片摘自wuyt2008的博客:<unity3d 尝试 基于地理定位的 增强现实> 本文要解决的问题就是,如何判断这些Point的东南西北,即坐标. 博主采用的开发环境是 Unity3D: 5.3.5: EazyAR: SKD v1.3.0: GyroDroid :这个Unity3D 的传…
嗯,最近再考虑,CityHunter中,玩家攻略藏宝图时,为了增加可玩性,应该增强在AR部分的游戏性.最近特别火的游戏<Pokemon Go>在打开摄像头以后,可以看到小精灵,实际上,如果这款游戏没有这个功能,那整个游戏还真没有什么游戏的感觉(就是动画.图像之类的元素特别少).本人比较懒,没有去弄这款游戏,于是跟远在澳大利亚的高中老兄弟咨询了一下这款游戏的情况. 事实上,<Pokemon Go>的AR元素,实现还是比较简单的.可以理解为,只不过是单纯的打开了摄像头,把背景替换了一下…
前几天解决了原生WebGL开发中的一个问题,就是在一个场景中绘制多个几何网格特征不同的模型,比如本文所做的绘制多个圆锥和圆柱在同一个场景中,今天抽空把解决的办法记录下来,同时也附上代码.首先声明,圆柱和圆锥的网格生成是我自己写的polyhedron.js模块,如果要加载其他模型,只需要把geometry换成其他几何体的网格即可,本文的重点不在于使用什么几何模型,而在于如何将各种不同的模型绘制到同一个场景中去. 第一件事,我们还是先把依赖的模型生成的js文件贴出来,以便参考者能够将代码组装起来.首…
using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// LoadAssets打开某资源文件并加载其中的所有Prefab到场景中 /// </summary> public class LoadAssets : MonoBehaviour { [HideInInspector] public string address;//资源所在文件夹路径 p…