- 博客(15)
- 收藏
- 关注
原创 [C#] 利用部分方法添加调试代码(附录)
项目生成时屏蔽Debug代码的脚本:using System;using System.IO;using UnityEditor;using UnityEngine;public class BuildPlayer : ScriptableObject{ static string rootPath = Application.dataPath + Path.DirectoryS
2013-10-26 13:19:37
3077
1
原创 [C#] 谨慎使用DynamicInvoke
Delegate类提供了一个变参接口DynamicInvoke(params object[] args),可以在委托的具体类型不可知的情况下通过反射来进行委托调用。很方便,但由于变参,而且使用了反射,对性能有极大的影响。
2013-09-22 09:34:44
10832
1
原创 [C#] 合理利用扩展方法的“污染”特性
C#的扩展方法功能使我们可以在没有源代码的情况下对一个类的功能进行扩展,虽然有一些限制(比如,只能是实例方法,只能访问被扩展类的公有成员等)但不失为一个增强代码灵活度的好机制。
2013-09-22 09:25:14
1544
原创 [C#] 利用部分方法添加调试代码
编写游戏代码的时候经常需要在开发过程中多写一些调试代码,这些代码到了游戏发布期有要都注释掉或者删除掉,一不留神残余代码还会对游戏发布版本的效率造成负面影响。这样就需要找一种有效手段来控制这样的代码。利用C#的部分类和部分方法就可以将调试代码单独独立成代码文件,而且发布期只需要把这些独立出来的代码文件屏蔽掉,原始代码中调用的部分自动就会被编译器忽略,而发布过程结束后,将屏蔽解除掉,便有可以进入下
2013-09-22 09:16:16
1537
原创 [C#] 委托与方法组
在编写委托相关代码,尤其是泛型委托相关代码的时候,经常会遇到下面这种问题:定义一个委托类型:public delegate void TestDelegate(T arg);定义一个测试用的类,及方法:public class TestClass{ public void TestFunc4Delegate(int arg){} publi
2013-09-22 09:06:12
4813
原创 [Unity 3D] Unity 3D 里的碰撞检测
Unity 3D里两个碰撞体之间发生碰撞可以用OnCollision族函数和OnTrigger族函数来获知和处理。Unity官方给出了两张可发生碰撞的组合表:Collision detection occurs and messages are sent upon collision Static ColliderRigidbody Coll
2013-09-14 19:43:31
6497
1
原创 [Unity 3D] Unity 3D 性能优化(三)
CenterOfMass在处理物理碰撞时,尤其是OnTrigger族消息,由于要手动计算碰撞点会经常要用到碰撞体的质心。获取质心常用的有三种方式:1、Collider.bounds.center2、Collider.rigidbody.worldCenterOfMass3、Collider.attachedRigidbody.worldCenterOfMass第一种方式其实是认
2013-09-14 18:56:42
2553
原创 [Unity 3D] Unity 3D 性能优化(二)
IsAliveU3D的粒子系统脚本接口相信很多人都用过,ParticleSyetem类的一系列接口都有一个bool类型的参数——withChildren,通过这个参数可以直接将相同的判断或者操作应用到一整个通过Transform父子关系树关联起来的ParticleSystem实例集合上。然而,但凡方便的功能,里面就必然有性能陷阱……以IsAlive这个接口为例(用来判断粒子系统是否
2013-09-14 18:42:36
3831
原创 [Unity 3D] Unity 3D 性能优化 (一)
听到过很多用Unity 3D开发游戏的程序员抱怨引擎效率太低,资源占用太高,包括我自己在以往项目的开发中也头疼过。最近终于有了空闲,可以仔细的研究一下该如何优化Unity 3D下的游戏性能。模型贴图等美术资源的优化,手头资源不足暂时不去涉及;Shader代码的性能优化也往后放放;这里先试着分析分析Unity 3D脚本中最常用代码段的执行效率。GetComponent
2013-09-14 17:47:43
7893
原创 [Unity 3D] Unity 3D中使用第三方DLL
Unity 3D项目中使用第三方DLL总是免不了的事情,使用方法也很简单,在项目根目录(Assets/目录)下建立Plugins目录,然后将DLL放入此目录即可。然而在实际项目中,第三方DLL放入项目后,时不时会出现这样的编译错误:Internal compiler error. See the console log for more information. output was:U
2013-08-07 11:04:31
4945
原创 [Unity 3D]Unity4里用MonoDevelop调试WebPlayer
Unity 4.0的发布,带给网页游戏开发者最好的消息之一莫过于终于可以调试WebPlayer了,从此网页版导出后就只能看调试日志的日子一去不复返。 但是这个方便的功能在使用上却并不是那么的方便。Unity WebPlayer默认情况下并没有开启调试通道,要开启还得费一点功夫:1、Build网页版项目时一定要开启Development Build选项,并且勾选Script Debugg
2013-07-19 13:03:22
2965
原创 [Unity 3D] 重力感应与罗盘(二)
让世界旋转起来: 游戏世界的主摄像机就是我们在游戏里的“眼睛”,为了让“眼睛”能够与手持 iPad 的我们保持协调,跟随着我们自己转身而转动,好像我们自己就站在游戏世界里用自己的眼睛观察游戏世界一样,这里就需要解决几个数学问题。 既然要旋转主摄像机,那么首先需要找到旋转的参照,因为我们旋转主摄像机的目的是为了观察游戏世界,那么这个参照自然选取游戏世界坐标系。主摄像机的 +Z 轴朝向就是
2012-02-19 16:11:30
9236
原创 [Unity 3D] Quaternion.LookRotation
此函数作用是生成一个四元数表示的三维朝向,然后可以直接把这个朝向赋给游戏对象来变更其朝向,也可以通过线性插值(Quaternion.Slerp 和 Quaternion.Lerp)来实现游戏对象从当前朝向转到这个新生成的朝向上来。很方便也很好玩的东西,可就是两个参数理解起来太让人头大了…… 官网对此函数的参数和解释如下:Quaternion.Loo
2012-02-19 11:28:43
16469
5
原创 [Unity 3D] 重力感应与罗盘(一)
iPad 的玩家大概都用过 StarWalk 这款应用——强力到无以附加的星图软件。StarWalk 里的世界其实就是虚拟了一个环绕用户的天球,当然还能够与真实的天球对应得上,当用户举着 iPad 对向不同方位时,能够从 iPad 屏幕上看到天球上对应的那一方向上的区域,就如同真的在用望远镜观察天球一样。这里面的原理其实很简单,整个虚拟的天球就是游戏世界,主摄像机就在这个游戏世界的正中心点,当 i
2012-02-19 00:39:11
13806
原创 [Unity 3D] 物理引擎学习笔记(一)
刚体: 同是物理引擎提供的功能,碰撞检测只需要有 Collider 便可以运作,但所有与作用力相关的属性和函数却都依赖 Rigidbody。重力: 一旦使用了 Rigidbody 组件,这个 GameObject 就会受全局重力影响,同时在发生物理碰撞时会自动调用物理引擎进行碰撞处理。 全局重力可以在 Physics Manager 中进行调整,具体位置为:“Edit --
2012-02-06 22:59:20
10364
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人