![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
U3D
屠变恶龙之人
这个作者很懒,什么都没留下…
展开
-
心跳包
心跳包主要用于长连接的保活和掉线处理。一般情况下为30秒。客户端按规定时间每次发送数据给服务器端,服务器接收到之后返回一个响应给客户端,此时在客户端就能看到返回的数据,表现正常则说明连接正常。======================================心跳包实现思路我们采用的思路是:客户端连接上服务端以后,服务端维护一个在线用户字典,客户转载 2017-08-24 09:03:54 · 629 阅读 · 0 评论 -
RPC的应用
unity 自带的network能满足一般的传输要求了,分两类,远程调用(RPC)和状态同步,其中状态同步适合做位置、方向之类的同步,RPC适合调用方法或提交数据。要使用RPC 首先服务器端代码和客户端代码中所有的方法都必须一样,没有研究是否可以是方法名相同内容不同的情况。即使不用也要有!把用于RPC的方法上面写上[RPC]例如[RPC]void Receive转载 2017-03-08 09:18:23 · 387 阅读 · 0 评论 -
DrawCall
图形引擎渲染画面的过程Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:1. 可见性测试1. 引擎首先经过简单的可见性测试,确定摄像机可以看到的物体2. 准备好物体的数据2. 然后把这些物体的顶点(包括本地位置、法线、UV等),索引(顶点如何组成三角形),变换(就是物体的位置、旋转、缩放、以及摄像机位置等),相关光源,纹理,渲染转载 2017-03-27 20:56:48 · 1120 阅读 · 0 评论 -
NGUI与UGUI
1. NGUI与UGUI的区别 1) uGUI的Canvas 有世界坐标和屏幕坐标 2) uGUI的Image可以使用material 3) UGUI通过Mask来裁剪,而NGUI通过Panel的Clip 4) NGUI的渲染前后顺序是通过Widget的Depth,而UGUI渲染顺序根据Hierarchy的顺序,越下面渲染在顶层. 5) UGUI 不转载 2017-03-07 19:11:27 · 1395 阅读 · 0 评论 -
Time.timeScale
原理Time.timeScale会影响Time.deltaTime的时间注意1、timeScale不会影响OnGUI()、Update()和LateUpdate(),在暂停过程中,三者不会停止渲染,只是时间的逻辑被固定死了,只会影响FixedUpdate()2、Time.timeScale=0 //暂停Time.timeScale=1 //恢复原创 2017-03-27 20:28:35 · 405 阅读 · 0 评论 -
碰撞和射线原理
一. Unity3d 碰撞器与触发器1. 要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动。碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。物体发生碰撞的必要条件两个物体都必须带有碰撞器(Collider)转载 2016-11-01 13:20:28 · 5071 阅读 · 2 评论 -
Unity5.x的GUIText被UI Text所取代
using UnityEngine;using System.Collections;//使用UI->Text 必须要增加头文件 UnityEngine.UI;using UnityEngine.UI;public class GameManager : MonoBehaviour { public static GameManag转载 2016-08-26 16:37:19 · 20139 阅读 · 0 评论 -
音频处理
游戏音频的播放在任何游戏中都占据非常重要的地位,音频的播放还可以分为两种,一种为游戏音乐,另一种为游戏音效。前者适用于较长的音乐,如游戏背景音乐。第二种试用与比较短的游戏音乐,如开枪,打怪 时“砰砰”一瞬间播放的游戏音效。今天MOMO将用下面的例子带盆友们去剖析Unity3D游戏音乐与音效的播放。Unity3D游戏引擎一共支持4个音乐格式的文件.AIFF 适用于较短的音乐文件可用转载 2016-11-30 09:23:44 · 379 阅读 · 0 评论 -
单例、观察者模式
几种常用的设计模式介绍1. 设计模式的起源最早提出“设计模式”概念的是建筑设计大师亚力山大Alexander。在1970年他的《建筑的永恒之道》里描述了投计模式的发现,因为它已经存在了千百年之久,而现代才被通过大量的研究而被发现。在《建筑的永恒之道》里这样描述:模式是一条由三个部分组成的通用规则:它表示了一个特定环境、一类问题和一个解决方案之间的关系。每一个模转载 2017-03-02 09:05:20 · 565 阅读 · 0 评论 -
修复Unity从4.x升级到5.x后部分脚本的编译错误
将Unity从4.x升级到5.x后,部分脚本编译时产生以下几种错误。1).UnityEngine.Mesh.GetTriangleStrip(int)' is obsolete: 2).UnityEngine.Mesh.SetTriangleStrip(int)' is obsolete: 3).Type 'UnityEngine.Component' does not s转载 2017-03-05 14:55:44 · 2108 阅读 · 0 评论 -
Unity触摸屏
Unity 触屏操作当将Unity游戏运行到iOS或Android设备上时,桌面系统的鼠标左键可以自动变为手机屏幕上的触屏操作,但如多点触屏等操作却是无法利用鼠标操作进行的。Unity的Input类中不仅包含桌面系统的各种输入功能,也包含了针对移动设备触屏操作的各种功能,下面介绍一下Input类在触碰操作上的使用。首先介绍一下Input.touches结构,这是一个触摸数组转载 2017-03-06 16:40:12 · 836 阅读 · 0 评论 -
2D游戏总结
帧动画显示 1、一张图片上有若干帧组成动画 通过修改其材质下的偏移量。比如Flappy Bird的例子,一幅图片中有三帧不同的动画 public int frameCount = 0; //帧数public int frameNumber = 10; //拍打频率public float timer; timer += Ti原创 2017-03-09 14:44:35 · 345 阅读 · 0 评论 -
Unity脚本声明周期
说明:图来自官方文档,测试时有点出入无论是可见物体还是相机的OnRenderObject都是在相机的OnPostRender之后执行 OnPreCull,的OnPreRender,OnPostRender,OnPostRender,OnRenderImage这几个去上有相机才执行 OnRenderObject任何激活go都执行,场景中同时有camera和可见go这个函数会在...转载 2017-03-25 17:56:44 · 2363 阅读 · 0 评论 -
unity3d中让物体显示和隐藏
gameObject.renderer.enabled //是控制一个物体是否在屏幕上渲染或显示 而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的 GameObject.Destroy() //表示移除物体或物体上的组件 代表销毁该物体 实际上该物体的内存并没有立即释放 而是在你下下个场景中槽释放内存资源,就是你a场景中Destroy了 一般是在c场景中才真转载 2017-08-21 18:51:05 · 5567 阅读 · 0 评论 -
FPS
using System;public class Class1:MonoBehaviour{private const long updateInternalTicks = 2000 * System.TimeSpan.TicksPerMilliseconds; private long lastTicks; private int frames =转载 2017-08-21 14:41:48 · 261 阅读 · 0 评论 -
MenuItem和ContextMenu
首先是unity顶部菜单栏的一些用法,如图:注意:MenuItem是编辑器类,所以技能导入 using UnityEditor; 命名空间,且一般我们的类也不是集成自MonoBehaviour的,而是集成ScriptableObject的。最普通的MenuItem调用:[MenuItem("MenuItem/普通的顶部菜单")]private static v转载 2017-08-21 09:36:44 · 1041 阅读 · 0 评论 -
GPU Instancing
《待验证。。。》在本文中,我们将讨论两种优化技术,它们可以帮助您减少Unity游戏中的Draw Call数量以提高整体性能:批处理和GPU Instancing。 批处理开发者在日常工作中遇到的最常见的问题之一是性能不足,这是由于CPU和GPU的运行能力不足。一些游戏可以运行在PC上,但是在移动设备上不行。游戏运行时运行是否流畅受Draw Call数量的影响很大。有几个解决转载 2017-08-08 17:32:39 · 2294 阅读 · 0 评论 -
PropertyBlock
可以用SetPropertyBlock方式来实现多个物体共享材质,有部分属性略有不同的情况这种方式被用在unity的地形上,里面的树就是通过这种方式实现不同树共用材质,却可以有不同的颜色倾向,风力效果等等这种方式可以在一定程度上简化材质数量,提高效率注意SetPropertyBlock 并不支持UI.Image,因为不能取到render组件用法如下转载 2017-08-08 17:16:01 · 2381 阅读 · 0 评论 -
"飞机大战"开发笔记
1. 直接拖背景,把两个背景放到一个空物体内便于管理。两个背景都需要挂上一下移动脚本。 2. 背景移动: void Update () {this.transform.Translate (Vector3.down * movespeed *Time.deltaTime); //做一个平移操作Vector3 position = this.transform.po原创 2016-08-27 10:28:25 · 708 阅读 · 0 评论 -
XML和Json
1.先介绍一下 XML 和 JSON 是什么东西吧?(1)XML扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进 行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平转载 2016-10-10 10:41:24 · 530 阅读 · 0 评论 -
Unity协程
1. 协程 在Unity 3D中,我们刚开始写脚本的时候肯定会遇到类似下面这样的需求:每隔3秒发射一个烟花、怪物死亡后20秒再复活之类的。刚开始的时候喜欢把这些东西都塞到Update里面去,就像下面这样写。 1 float nowTime = 3.0f; 2 bool isDead = true; 3 float deadTime = 20.0f; 4 5转载 2017-03-06 19:05:25 · 631 阅读 · 0 评论 -
AssetBundle压缩/内部结构/下载和加载
一、AssetBundle的压缩方式 Unity支持三种AssetBundle打包的压缩方式:LZMA, LZ4, 以及不压缩。 1、LZMA压缩方式 是一种默认的压缩形式,这种标准压缩格式是一个单一LZMA流序列化数据文件,并且在使用前需要解压缩整个包体。LZMA压缩是比较流行的压缩格式,能使压缩后文件达到最小,但是解压相对缓慢,导致加载时需要较长的解压时间。转载 2017-03-25 17:49:56 · 3426 阅读 · 0 评论 -
碰撞体和刚体
图解如下:原创 2016-07-10 18:42:39 · 775 阅读 · 0 评论 -
【Unity探究】物理碰撞实验
目录(?)[-]Static Collider 静态碰撞器Rigidbody Collider 刚体碰撞器Kinematic Rigidbody Collider 运动学刚体碰撞器Character Controllers 角色控制器移动的静态碰撞器VS静止的静态碰撞器移动的静态碰撞器VS静止的刚体碰撞器移动的刚体碰撞器VS静止的静态碰撞器移动的刚体碰撞器VS静止的刚体碰撞器移动的静态碰撞转载 2016-08-29 21:31:41 · 707 阅读 · 0 评论 -
Unity性能优化
之前因为老大要求,要把unity最终发布的包压缩到至少之前大小的一半,这可难倒我了,不过最终还是在问了很多大神后解决了,主要是在本文章中讲的“二”。 tag: unity素材压缩、unity资源压缩、unity压缩包大小、unity怎么节省空间这里从三个纬度来分享下内存的优化经验:代码层面、贴图层面、框架设计层面。一.代码层面。1.foreach Mono下的f转载 2017-03-08 19:20:27 · 226 阅读 · 0 评论 -
Unet介绍
前段时间,研究了一下UNet,经过项目实践,大致整理了下遇到的问题。 源码Bitbucket : (https://bitbucket.org/-Technologies/networking)需要说明的是,这个项目只包含上层的包装,一些低层的网络实现在Unity内部,如NetworkTransport类等并不包含。 UNet常见概念简介 Spawn:简单来说,把服务器上转载 2016-10-27 19:32:06 · 5529 阅读 · 1 评论 -
Rigidbody、CharacterController和NavMeshAgent的区别
Rigidbody、CharacterController和NavMeshAgent这三者到底是什么关系,经过一番搜索和测试,基本上弄明白了这三者的差别:Rigidbody是用来模拟真实物理效果的,它可以设置重力,可以为对象施加外力。注意它和各种Collider的关系:只有Rigidbody才能被施加外力,这个力可能是被直接施加的,也可能是被其它Rigidbody碰撞产生的间接转载 2016-10-03 15:49:36 · 2708 阅读 · 0 评论 -
欧拉角与万向锁
1. 什么是欧拉角?2. 万向锁是一种什么现象?3. 游戏动画中遇到万向锁时会发生什么?4. 怎样解决万向锁这个问题? 一,什么是欧拉角? 用一句话说,欧拉角就是物体绕坐标系三个坐标轴(x,y,z轴)的旋转角度。在这里,坐标系可以是世界坐标系,也可以是物体坐标系,旋转顺序也是任意的,可以是xyz,xzy,yxz,zxy,yzx,zyx中转载 2016-10-03 14:49:29 · 1317 阅读 · 0 评论 -
UnityEngine.Mesh不包含 GetTriangleScript的定义
将GetTriangleStrip改为GetTriangles,另外也需要改成SetTriangles即可原创 2016-10-16 14:07:49 · 1834 阅读 · 0 评论 -
单例模式
举个例子,在某些情况下,有些对象,我们只需要一个就可以了,这就是我们Unity3d中的单例模式。 比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个, 这里就可以通过单例模式来避免两个打印作业同时输出到打印机中, 即在整个的打印过程中我只有一个打印程序的实例。 简单说来,单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中转载 2016-09-30 18:24:39 · 211 阅读 · 0 评论 -
忍者跑酷动画状态机
Float:HorizontalFloat:VerticalBool: isWallBool:isGround原创 2016-09-29 14:30:44 · 279 阅读 · 0 评论 -
关于MissingReferenceException
MissingReferenceException: The object of type 'GameObject' has been destroyed but you are still trying to access it.在开发飞机大战的游戏过程中,遇到这样的错误,折腾了很久,最后终于解决了。我遇到的问题是脚本挂载问题。把object制成预制体,不要放在面板中,这样挂载的脚本就不原创 2016-08-25 19:20:24 · 3441 阅读 · 4 评论 -
UnityEngine.Application.LoadLevel(int)已过时
遇到这样的情况,只需修改如下:原创 2016-07-16 20:02:08 · 17544 阅读 · 2 评论 -
向量在游戏开发中的作用
(一)向量在游戏开发中是非常实用的,我们在学校学完向量的知识后,只知道向量的基本知识,但对于如何将所学到的向量知识运用到实际的游戏开发中却不知所措。我计划写几篇关于向量在游戏中的应用的文章,总结一下在实际工作中所遇到过的运用向量机智处理问题的技巧。接下来要写的东西都是记录在我的云笔记中,现在计划整理一下后分享出来。 对于向量的那些基本性质我不想说太多,有兴趣的读者可以自行转载 2016-11-29 10:46:56 · 1747 阅读 · 0 评论 -
AI范围检测(指定范围内攻击)
在游戏里,我们所控制角色靠近怪物的时候,当到达怪物的一定范围内,怪物就会来追击你,并攻击你,那么这是怎么实现的呢?大家看下图一个简单的演示:上图简单的演示了怪物检测的原理那么我们怎么通过代码来实现的呢?由于之前在第七课已经介绍了AI,那么之前就不写了我们先要让敌人获取要检测的对象//获取要追踪的对象privat转载 2016-11-01 08:55:09 · 487 阅读 · 0 评论 -
unity实现围绕星球走动
一、效果图 二、实现基本原理和代码1、原理通过小球检测向右前方发送射线,给小方块施加右前方的力,同时检测小方块射线检测当前到球的碰撞位置进行旋转。最后再给方块一个力让它球重心下落。2、代码[CSharp] view plain copyvoid Update () { GetCom转载 2016-11-13 11:38:43 · 2534 阅读 · 0 评论 -
对象池使用实例
转自: http://www.taidous.com/forum.php?mod=viewthread&tid=41439&extra=page%3D1&page=1当游戏中需要发射子弹(gameobject)等操作的时候,不停的Instantiate和destroy就会很耗性能,如果又是多人游戏,那多人同时Instantiate和destroy子弹,配置不高的设备可能会炸,同时这种大转载 2017-03-08 18:46:20 · 628 阅读 · 0 评论 -
unity中对象池运用
最近在研究对象池在unity中的运用对象池,通常用于在那些需要经常创建又销毁的对象比如我们场景中的小怪,经常需要创建和销毁,我们就可以在小怪销毁的时候,不真正的销毁而是,而是把它放入对象池中等到下一次我们需要创建小怪的时候,再从对象池中取出来由于对象池的对象没有真正销毁,而手机的内存又是如此宝贵,所以我们需要注意对象池中对象的数量,不然很容易就爆内存了对于对转载 2016-10-09 21:23:18 · 1407 阅读 · 0 评论 -
面向对象设计的六大基本原则
Unity脚本编程众所周知,unity的编程属于脚本化,脚本没有一个具体的概念跟架构, 导致在项目过程中,经常出现哪里需要实现什么功能,就随便添加脚本, 结果,就造成了一片混乱,不好管理。更有甚者,自己的写的代码闲置一段时间后,再去想找某个功能的实现,都要在视图中翻来覆去找半天。 哎!请容许我在此感叹一声,这还是你写的东西么? 因此,一个好的设计模式是多么的重要啊,转载 2017-03-02 08:49:40 · 1157 阅读 · 0 评论 -
生存射手学习笔记
主角控制 *************** ************* 移动 ****************************public class playmove : MonoBehaviour { public float speed = 1; void Start () { rigi = this.GetComp原创 2017-03-08 14:05:10 · 373 阅读 · 0 评论