11

【Unity3D】Unity游戏编程基础学习笔记1

 2 years ago
source link: https://tandy123.github.io/2017/06/27/unity3d-fundation1/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

这篇博客主要是学习coursera上面Unity游戏编程基础第一、二周课程过程中的一些笔记

  • 该课程是复旦大学软件学的姜忠鼎老师主讲,姜老师也是我浙大CAD出来的。
  • 附上课程链接

游戏开发技术

游戏引擎介绍

  • 游戏引擎是一些已编写完成的可编辑的游戏系统,或者一些可编辑实时图像应用的核心组件
  • 这些系统为游戏开发者提供游戏研发所需的多种工具,开发者能够快速地实现游戏逻辑,无需从零开始编写代码。
  • 游戏引擎就好比赛车引擎

游戏引擎功能

游戏引擎的功能模块包括:

  • 游戏中的实时光影绘制
  • 物理模拟系统
  • 游戏场景渲染机制
  • 网络通信、AI系统
  • 平台移植功能

主流游戏引擎

  • Unity引擎
  • Unreal虚幻引擎
  • CryEngine引擎

Unity基本概念

  • 游戏场景中存在的物体都可以称为游戏对象,包括场景中的物体、环境元素、特效等等

预制件(Prefab)

  • 用于管理游戏场景中多个相同的游戏对象(比如项目1中的多米诺骨牌),用预制件的好处包括
    • 方便进行相同游戏对象的创建
    • 相同游戏对象的修改可以批量进行

物理系统基础

物理系统组件包括:

图形系统基础

  • 网格过滤器
    • 网格过滤器存放游戏对象的网格信息,并把网格信息传递到网格渲染器中,最后将网格渲染到屏幕中,此组件的目的主要用于确定模型的形状和尺寸。
  • 网格渲染器
    • 网格渲染器从网格过滤器中获取几何形状,用于渲染场景中的模型。
  • 网格过滤器和网格渲染器必须成对使用,缺少任意一个都会导致游戏对象渲染失败。
  • 呈现物体表面的颜色、质感特性,材质在网格渲染器中设置
  • 着色器主要用于图像的渲染过程,它具有可编辑性,不受显卡的固定管线限制,可以实现丰富的图像效果。这极大地提高了图像的品质。
  • 我们可以使用着色器语言来编写相应的着色器脚本,以实现头像渲染的不同效果
  • 几种常见的着色器模式:
    • 淡入淡出效果
    • 透明与不透明效果
  • 方向光:模拟极远处的光照,如地球上的太阳光
  • 点光源:模拟光源向四周发出均匀的光线,例如日常生活中的灯泡
  • 聚光灯:模拟光源向某个方向发出圆锥体光线,例如手电筒、路灯
  • 面光源:无法模拟实时光照,用于光照烘焙

在Unity的场景中,必须有一个摄像机用于绘制场景,引擎对摄像机可以看到的游戏世界中的空间区域进行渲染,生成最终的游戏画面。

  • 根据视角不同

摄像机清除标记

  • Skybox(预设):以天空盒最为摄像机的清除标记
  • Solid Color(纯色背景):以某种颜色作为摄像机的清除标记
  • Depth Only(仅深度,用于多个摄像机的同时绘制):以深度较低的摄像机渲染的图案作为该摄像机的清除标记

  • Don’t Clear:不清除,摄像机的清除标记为上次渲染过的图像

摄像机投影方式

  • Perspective(透视)
  • Orthgraphic(正交)
  • 音频监听(AudioListener)采集场景当中的声音并播放
  • 摄像机对象中预置了AudioListener组件,我们也可以通过添加组件的方式,给游戏对象添加音频监听组件。
  • 当场景中存在多个AudioListener时,Unity编辑器会随机选择其中一个AudioListener生效,其余均保持静默

当Unity项目制作完毕,需要对Unity项目进行构建,才能使Unity项目脱离Unity编辑器独立运行

项目构建的步骤

  1. 把场景添加到构建列表
  2. 选择项目发布的平台
  3. 设置平台参数
  4. 生成游戏项目
  • 完成了第一个小项目:多米诺骨牌
  • 前两周的学习主要对一些基本概念进行介绍,关于脚本的编写并没有深入讲,通过一个具体的项目,熟悉了Unity的基本操作,后面会有更多有意思的项目,加油!
  • Unity工程中的Library可以删除,只要保留Asset和ProjectSetting,下次导入的时候就会自动生成Library

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK