Unity3D开发基础知识详解

  • 本文简介
  • 常用方法简介
  • 物体操作
    • 实例化
  • 网络相关
    • 网络协议
      • TCP
      • UDP
      • 代码怎么写
  • 编译相关
    • 文件保存路径
  • 学习资源推荐

本文简介

       本文旨在总结之前的博客,因为之前的博客比较零散,对于各个模块之间划分不够清晰,在此博客进行总结归纳,并且附上最新遇到的一些问题及解决办法,希望能够对自己和他人都能够有所帮助。另外在本文最后附加我浏览过的比较好的,相关问题解决的文章和网站,供大家方便查阅;如果您对我的文章满意,可以收藏或者关注我。

常用方法简介

1、Start() 开始方法;
2、Update() 正常更新逻辑,每渲染一帧都会调用
3、FixedUpdate() 不受帧率的变化,固定的时间间隔被调用,怎么设置间隔?Edit->Project Setting->time下面的Fixed timestep
4、LateUpdate() 会在每一帧中被调用。在所有Update函数被调用之后才执行。有利于程序的有序执行。(例如:跟随摄像机就应该在LateUpdate执行,因为它跟随的对象也许需要在Update中执行
5、OnGUI() 游戏界面绘制、更新
6、OnCollisionEnter(Conllision other) 在刚体与刚体开始接触时候调用此方法,(记住是刚体之间的碰撞)
7、OnCollisionStay(Conllision other) 在刚体与刚体碰撞的过程中,调用此方法 每帧都会调用此方法,知道碰撞结束;
8、OnCollisionExit( Conllision other) 在刚体与刚体停止接触时,调用此方法
9、OnTriggerEnter(Collider other) 当Collider(碰撞体)进入trigger(触发器)时调用,这个消息被发送到触发器碰撞体和刚体(或者碰撞体假设没有刚体)。注意如果碰撞体附加了一个刚体,也只发送触发器事件
10、判断两个物体之间的距离 Vector3.Distance( position1,position2)

物体操作

实例化

Transform  shoot = (Transform)Instantiate(shotPrefab,firePoint.gameObject.transform.position,
 firePoint.gameObject.transform.rotation);   
 shoot.rigidbody.velocity= transform.TransformDirection(Vector3.forward*100f);

velocity是对物体设置某个方向的速度

  • 旋转
    Vector3.Rotation()        绕某个轴旋转 Quaternion.Angle()

网络相关

       在这么一个多元化,网络越来越便宜和硬件性能越来越好的时代,单机游戏已经被很多早年出道的公司占据一席之地,并且单机游戏不能够有很好的社交性,至于你的应用联网了,才算一个真正的应用,那么在Unity中我们该怎么使用网络呢?

网络协议

TCP

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内[1] 另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。 详细简介还是问度娘或者查看相关书籍,建议书籍。

UDP

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。 详细简介还是问度娘或者查看相关书籍,建议书籍。

代码怎么写

其实在unity中,我们用的就是Socket编程,和服务器创建连接,并维持心跳,通过协议进行通讯;代码和我们平时在C#中写的没什么差别,要记住,unity提供的是游戏渲染引擎,开发工具,并不是语言,我们用的是C#,C#的很多特性,我们都可以使用,当然切记要注意.net版本;unity中的版本是3.5 full 和3.5 sub;这个你可以在unity buildsetting中的othersetting中找到,基本上我们如果没有特殊需求,都会采用3.5sub。

编译相关

我们的游戏或者应用做好了,肯定要烧录到设备的,那么这就牵涉到我们打包部署这个环节,如何正确打包,针对不同的平台,我们的配置该如何呢?都有哪些差异呢?

文件保存路径

每个应用安装到设备,系统都会在硬盘给它分配相应的文件存储空间,但是在不同的平台,他们相对与系统的目录路径是不一致了,unity是个跨平台的开发工具,就需要针对不同的平台进行改变,为了方便,我们都会使用条件编译,如下:

        #if UNITY_ANDROID  
            the code of android  
        #endif  
        #if UNITY_IPHONE  
           the code of iphone  
            #endif  
        #if UNITY_WIN  
         the code of android  
        #endif  

那么这些条件在哪里定义呢?首先你在VS的工程属性中可是设置,在unity中的buildsetting中也能够进行条件设定,代码中你也可以使用unity自带的平台个枚举,你可以通过代码提示枚举(RuntimePlatform)出来Application.platform==RuntimePlatform.Android判定运行游戏的设备是什么类型。

学习资源推荐

你可能感兴趣的:(Unity3D)