摘要:
(2012-07-31 23:58:26)在Unity3D内有PlayerPrefs类进行简单数据保存,如SetInt和GetInt存取整型数据,SetFloat和GetFloat存取浮点型数据,SetString和GetString存取字符型数据。使用的是键值对映射的方式进行存取。 每个项目拥有各自的键值对库(不同项目不同库),一旦存储好键值对,无论是场景变换还是重启开机都能取出原来的数据。需要注意的是,这个键值对库会随游戏编译发布而从项目工程带到发布后的游戏中,而不会重置。因此发布游戏前要把键值对库设置为游戏初始状态。 这可以作为场景间互取数据和本地存储数据的简单方式,比如要记录单机游戏各 阅读全文
摘要:
(2012-07-27 22:13:38)1.unity3D中脚本类若不是MonoBehaviour子类,则不含回调函数,不可添加给游戏对象,即要自行在其他MonoBehaviour子类中实例化。因此对于想要随场景载入自动实例化,且在场景中时时存在的类,就算不想用到update等回调函数最好也作为MonoBehaviour的子类。2.unity3D的脚本类中即使是MonoBehaviour子类,如果不把其附加在GO身上,构造函数和Start()函数也不会被调用。3.对于MonoBehaviour子类,其本身的构造函数最好不要用,而去用void Start()等回调函数去初始化!问题:用写入和附 阅读全文
摘要:
(2012-07-27 19:42:23)1.C#文件流使用前要加上using System.IO;2.在Unity3D中,调试阶段的写入文件的默认路径是项目文件夹下。 发布后的写入文件默认路径是exe文件的同级目录。无论是调试还是发布(尤其是发布)时,一定要注意把该读取的文件放在特定目录,否则出错。3.对于手动写好的一些txt文件,无论是作为之后读取还是写入用途(尤其是要经常进行附加写入用途),都要先安排好最后一行的转行符,防止出错。TextWriter 是 StreamWriter 和 StringWriter 的抽象基类,它们将字符分别写入流和字符串。创建一个 TextWriter 实例 阅读全文
摘要:
(2012-07-11 23:23:40)1.碰撞主要有三个函数,void OnCollisionStay,void OnCollisionEnter和OnCollisionExit,三个函数都是回调函数,都有(collisionInfo : Collision)参数。2.一般而言,子弹等物体要进行与Player的消除碰撞处理:Physics.IgnoreCollision(clone.collider,this.collider);3.脚本附在子弹上时,collisionInfo对象由Collision类生成,则collisionInfo包含被碰撞对象信息。另外:①collisionInfo 阅读全文
摘要:
(2012-07-09 15:55:34)1.C#新建无名类是用:new 类名(参数);而javascript是用:类名(参数);2.可以使用#region和#endregion进行区域注释。3.使用C#的enum类型定义变量和使用Enum类不同,后者需要using System; enum常为public enum Day{M,T,W}。也就是说当成一个结构体一样去使用。枚举结构内部有编号,默认从0开始,即M=0,T=1,W=2。枚举变量只能取定义时指定的变量名或变量名代表的数值。4.C#常用:①private int testData;②public int TestDate{ get{含 阅读全文
摘要:
(2012-07-08 13:40:50)部分函数尽量不可在update使用,否则极其消耗资源1.在一个脚本内访问其他对象: 想得到对象:可以用下述函数得到对象,或者直接定义一个变量让外部手动传入(可以的话尽量如此)。①通过名字访问对象(消耗资源较多),注意对象名字分为带层次和不带层次。以A为例,"A"为可带父级,"/A"为不可含父级,"C/B/A"为C可带父级,"/C/B/A"为C不可带父级(未验证):GameObject.Find("对象名字");②通过标签访问对象,在访问数量多个,却单一类 阅读全文
摘要:
(2012-07-07 23:26:11)1.使用C#的List等容器前要头文件using System.Collections.Generic;容器:(声明--容器实例化--元素实例化--元素入容器)声明:public List<Transform> goals; 容器实例化:goals=new List<Transform>();使用:goals.Add(enemy); //添加到List末尾,enemy作为元素也是要先实例化的 goals[0]; //获取List索引位置的元素 goals.Count; //变量,得到List元素个数 goals.Clear(); 阅读全文
摘要:
(2012-07-07 21:57:33)1.Vector3类的静态方法Dot(两个Vector3对象):计算向量间的点积(即数量积,内积),法则为a*b*cos<a,b>。也可以用来求向量夹角(先normalized化为单位向量)。如求A对象是否在B对象视线的30度张角内。2.Vector3类的静态方法Distance(两个Vector3对象):计算两个向量间的距离。3.Vector3实例的变量normalized:在不改变原向量情况下。返回同方向的单位向量,过小则返回0向量。4.Vector3实例的方法Normalize():使当前向量变为同方向单位向量,过小则返回0向量。5. 阅读全文
摘要:
(2012-05-25 19:41:57)1.一般来说,unity3d中导入3ds max的模型以fbx格式为宜。不过即使3ds max导出.fbx文件时勾选了内嵌媒体,通常也无法在fbx模型导入unity时出现贴图。不过此时一般会生成fbx模型对应的materials文件夹(也即模型对应的材质球),无法出现贴图时,材质球是空的。此时可以把相关材质贴图图片放入unity后,将materials中的材质球赋予对应的材质贴图图片,此时模型即可得到贴图。需要注意的是,材质贴图图片可以为tga,但不可以是dds的,因为unity不能解析,dds文件可以用装了dds相关插件后的ps进行格式转换为tg.. 阅读全文
摘要:
(2012-05-03 14:57:35)release版本发布的时候一般带上XX.exe和content文件夹即可运行,但是有些时候会出现单击XX.exe运行后没有任何反应的情况,常是因为release版本运行错误,窗口还没生成程序即已经关闭的原因。运行错误的原因:1.在代码中引用的资源文件并不全部来源于content文件夹(release版本只会附带上content的资源文件夹,其他外部引用资源不会附带)。比如用tilemap生成txt的地图文件,之后在debug版本中用C#的传统方式去读取默认路径(此处为debug文件夹)下的txt文件。此时若生成了release版本,程序在读取默认路径 阅读全文