一.介绍:

Unity3D软件:综合开发环境,实时三维动画等类型的多媒体内容,并支持这些内容在Windows、iOS、Android等多种平台的发布。

Mono:脚本编程基于Mono技术,可使用JavaScript、C#或Boo语言编写,用来对基于可视化编辑界面的基础开发方式进行功能扩展。

一个基于Unity3D引擎的游戏,程序结构:

VR/3D App
Unity3D engine
mono
native code

以windows系统为例,3D App与 U3D engine之间通过调用U3D api

U3D engine主要包括,托管程序(managed文件夹,其中包含UnityEngine.dll和其他xxx.dll)与ASSETS文件(xxx.assets)

mono文件夹中,主要是mono.dll

native code是CPU相关的机器码

二.基本概念

组件(Component游戏对象(GameObject场景(Scene工程(Project

Component构建游戏对象的基础单元,为游戏对象添加特定的功能;

GameObject构建游戏的基础(独立)单元

Scene单个场景作为一个游戏关卡或游戏主菜单

Project单个开发项目

资源(Asset表示材质、纹理、音频文件、游戏对象等在开发过程中可使用的资源。

预制件(Prefab):相当于为这些重复物体创建一个模板;

脚本(Script):是游戏业务逻辑的实现。脚本也是一种组件;

相机(Camera:在屏幕上所看到的一切均是通过相机视角来展示的

灯光(Light:为场景渲染出不同的气氛

三.视图菜单

四、坐标系统

世界坐标(World Space

视口坐标(ViewPort Space:坐标点被归一化,并且相对于相机建立坐标系。以相机左下角为(0,0)点,右上角为(1,1)点,Z轴使用相机的世界坐标单位。

屏幕坐标(Screen Space:坐标点使用像素点进行定义,并且相对于屏幕建立坐标系。以屏幕左下角为(0,0)点,右上角为(pixelWidth,pixelHeight)点,Z轴使用相机的世界坐标单位。

局部坐标(Local Space:使用所选择对象的坐标系统。

五、资源

网格(Mesh

材质(Material:物体表面最基础的材料,如木质、塑料、金属或者玻璃等

纹理(Texture:物体表面呈现的线形纹路,是在材质基础上的丰富细节呈现。

贴图(Map:一种将图片信息投影到曲面的方法。

六.脚本交互

图中内容可简化为这样的方法执行次序:Awake --> Start --> Update --> FixedUpdate --> LateUpdate --> OnGUI --> Reset -->  OnDestory

下图描述了脚本生命周期的脚本方法调用流程与时机。

  • Awake:用于在游戏开始之前初始化变量或游戏状态,在脚本整个生命周期内仅被执行一次。Awake在所有游戏对象初始化之后执行,因此可以在方法中安全地与游戏对象进行通信。
  • Start:仅在所有脚本的Update方法第一次被调用前执行,且仅在脚本实例被启用时执行。Start在所有脚本的Awake方法全部执行完成后才执行。
  • Update:在每次渲染新的一帧时执行。由于该方法调用的频率与设备性能、被渲染对象有关,导致同一游戏在不同机器的效果不一致(因为Update方法的执行时间间隔不一致)。
  • FixedUpdate:在固定的时间间隔执行,不受游戏帧率的影响。所以处理RigidBody时最好用FixedUpdate。FixedUpdate的时间间隔可在工程设置中更改(Edit --> Project Setting --> Time)。
  • LateUpdate:所有脚本的Update方法调用后执行。例如相机跟随即是在LateUpdate方法中实现。
  • OnGUI:在渲染和处理GUI事件时执行。
  • Reset:用户点击属性监视面板(Inspector)的Reset按钮或首次添加该组件时执行,仅在编辑模式下执行。
  • OnDestroy:当游戏对象将被销毁时执行。

需要注意的是,必须所有脚本的Awake方法均执行完毕后才会开始执行这些脚本中的Start方法,而各脚本的Awake方法的调用顺序是随机的。因此,对象的创建可在Awake方法中实现,而对象的获取可在Start方法中实现,保证调用先后次序。

一个控制object移动的脚本:(C#编写)

void Update()

为Unity预先声明好的函数,游戏中的每一帧都会调用Update()

七、unity后台是如何执行多个脚本的?    

Unity后台是如何执行脚本的了。每个脚本的Awake、Start、Update、LateUpdate、FixedUpdate等等,所有的方法在后台都会被汇总到一起:

后台的Awake()
{
    // 这里暂时按照上图中的脚本执行顺序,后面会谈到其实可以自定义该顺序的
    脚本2中的Awake();
    脚本1中的Awake();
    脚本0中的Awake();
}

后台的方法Awake、Update、LateUpdate等等,都是按照顺序,等所有游戏对象上脚本中的Awake执行完毕之后,再去执行Start、Update、LateUpdate等方法的。

后台的Update()
{
    // 这里暂时按照上图中的脚本执行顺序,后面会谈到其实可以自定义该顺序的
    脚本2中的Update();
    脚本1中的Update();
    脚本0中的Update();
}

unity3d简介的更多相关文章

  1. Unity3D学习笔记(一):Unity3D简介

    Unity3D简介一.什么是Unity.U3D?全面整合的专业引擎 二.这个软件能做什么?1.内容:3D2D游戏,教育,建筑,网页,VRAR,家庭娱乐系统2.媒体:PC平台,主机,移动,VR 1.UE ...

  2. 第一节Unity3D简介

    Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎.Unity ...

  3. Unity3D shader简介

    Unity3D shader简介 可以肯定的说Unity3D使得很多开发者开发游戏更容易.毫无疑问,shader(着色器)编码,仍有很长的路要走.shader是一个专门运行在GPU的程序,经常被神秘包 ...

  4. GJM : Unity3D HIAR -【 快速入门 】 一、简介

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  5. Unity3D学习笔记(一):Unity简介、游戏物体、组件和生命周期函数

    Project(工程.项目):工程是把游戏开发当前所需要的资源归类管理用的. Console控制台:日志.报错.调试,右上角,消息过滤 Assets:资源,存储游戏中一切用到的资源 Library:临 ...

  6. Unity3D逻辑热更新,第二代舒爽解决方案,L#使用简介

    热更新 天下武功,无坚不破,唯快不破 热更新就是为了更快的把内容推到用户手中. 之前,我设计了C#Light,经过半年多的持续修补,勉强可用,磕磕绊绊.感谢那些,试过,骂过,用过的朋友,在你们的陪伴下 ...

  7. Unity3D内置资源包简介

    Custom Package:倒入第三方的资源包,如果资源包存在中文路径,很容易导入入失败. Character Controller:角色控制相关脚本,第一第三人称的prefab; Glass Re ...

  8. Thinking in Unity3D:渲染管线中的Rendering Path

      关于<Thinking in Unity3D> 笔者在研究和使用Unity3D的过程中,获得了一些Unity3D方面的信息,同时也感叹Unity3D设计之精妙.不得不说,笔者最近几年的 ...

  9. 【译】Unity3D Shader 新手教程(1/6)

    本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D ...

随机推荐

  1. openresty 编译ngx_pagespeed 模块-docker 构建

    ngx_pagespeed 是一个很不错的web 优化模块,我们通过简单的配置就可以对于web页面的加载有很大的提升 ngx_pagespeed 依赖psol 模块 Dockerfile   # Do ...

  2. C#窗体模拟键盘按键(组合键)产生事件 ---- 通过keybd_event()函数

    如何模拟键盘按键触发产生的事件,比如模拟按下Alt + F4 关闭当前程序,Ctrl+Shift 切换输入法等 可以通过win32api 键盘事件 keybd_event() 来实现 1.定义键盘按键 ...

  3. centos7 关闭防护墙

    centos6 里面的默认防火墙 是  iptables, 所有 使用 service iptables  stop  就可以停止防火墙了. 但是 centos7 里面的 防火墙 叫做 firewal ...

  4. git忽略已提交的文件或目录

    项目中的某个文件或目录已经被commit,并push到远程服务器server了. 这时发现要忽略该文件或目录,在.gitignore文件里面添加规则已经不起作用了.因为.gitignore只对从来没有 ...

  5. C166-变量和函数指定物理地址之二

    按照<RENAMECLASS Compiler Directive>http://www.keil.com/support/man/docs/c166/c166_renameclass.h ...

  6. 同步中的四种锁synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock

    为了更好的支持并发程序,JDK内部提供了多种锁.本文总结4种锁. 1.synchronized同步锁 使用: synchronized本质上就2种锁: 1.锁同步代码块 2.锁方法 可用object. ...

  7. Hanlp实战HMM-Viterbi角色标注中国人名识别

    这几天写完了人名识别模块,与分词放到一起形成了两层隐马模型.虽然在算法或模型上没有什么新意,但是胜在训练语料比较新,对质量把关比较严,实测效果很满意.比如这句真实的新闻“签约仪式前,秦光荣.李纪恒.仇 ...

  8. delphi内存映射 与 映射数据获取

      一.原理     通过使用“内存映射文件”,实现内存共享 二.主要操作     共享内存结构: PShareMem = ^TShareMem; TShareMem = Record id:stri ...

  9. InfluxDB(官方使用说明)

    安装InfluxDB OSS 此页面提供有关安装,启动和配置InfluxDB的说明. InfluxDB OSS安装要求 root为了成功完成,需要安装InfluxDB软件包或具有管理员权限. Infl ...

  10. 黄聪:wordpress教程

    又一个作品完成!<跟黄聪学Wordpress主题开发>,国内最好的Wordpress主题模版开发视频教程!! 目录预览: WordPress官方源文件层式结构讲解 WordPress数据库 ...