Unity3D游戏开发(1)

1.游戏要素

(1)基本元素:

玩家(players)

规则(rules)

挑战(challenges)

结果(outcome)

(2)拓展元素:

场景设定与故事(Setting/Promise&Story):角色(characters)、冲突(conflicts)

玩法(Game Play)

美术、音效


2.游戏分类

(1)交互技术(interaction)

2d, 卷轴-2d, 2.5d, 3d, AR,VR

(2)题材(genre/type)

Puzzle, Shoot, Escape, Adventure, RPG … …

(3)平台(platform)

PC,游戏机,手机,页游, Flash游戏 … …

(4)玩家(players)

单人,双人,多人,组队,人/机

(5)视角(perspective)

第一人称,第三人称

(6)网络(internet)

离线,在线


3.游戏引擎

游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。

游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。

游戏引擎是一个为运行某一类游戏的机器设计的能够被机器识别的代码(指令)集合。它像一个发动机,控制着游戏的运行。一个游戏作品可以分为游戏引擎和游戏资源两大部分。游戏资源包括图象,声音,动画等部分,列一个公式就是:游戏=引擎(程序代码)+资源(图象,声音,动画等)。游戏引擎则是按游戏设计的要求顺序地调用这些资源。


4. 关于Unity3D的题目

1.解释对象与资源的区别、联系,根据官方案例,分别总结资源和对象组织的规则/规律。
对象与资源的区别和联系:
对象包含并整合一种或多种资源,直接出现在游戏场景中;而一个资源可以为多个对象同时使用。特别的是,资源又可实例化为对象来使用。
对象的组织规则:
游戏对象包括玩家、敌人、环境、摄像机等等,这些父对象包括各种子对象,子对象是空对象、3D和2D物体、摄像机、灯光、音频、UI元素、粒子系统等等这些真正意义上的对象。
资源的组织规则:
资源包括脚本、音频、图片等等,根据各自的服务对象放于Assets文件夹的各目录下。



2.编写简单程序代码,逐一验证 MonoBehaviour 基本行为触发的条件。
void Start () {
   print("Start!"); //在所有Update函数之前被调用1次   
}
void Update () {
   print("Update!"); //在行为启动时,每一帧被调用
}
void Awake() {
   print("Awake!"); //当一个脚本实例被载入时被调用
}
void FixedUpdate() {
   print("FixedUpdate!"); //在行为启动时,每一时间片被调用
    }
void LateUpdate() {
   print("LateUpdate!"); //在行为启动时,在所有Update函数之后执行
}
void OnGUI() {
   print("onGUI!"); //渲染和处理GUI事件时调用 
}
//其他行为触发条件用同样方法验证


3.通过官方参考手册,查找 GameObject,Transform,Component 对象,简单解释三者之间的关系。(使用UMLet 画教程上图)
Transform是Component的一种,Component必定包含Transform
GameObject包含Component,因此也必定包含Transform

(图片省略)




4.整理官方和其他学习材料,介绍如何用程序(代码)管理一个场景的游戏对象树林。编写简单代码验证以下技术的实现:
(1)查找对象
通过名字来查找:public static GameObject Find(string name);
通过标签来查找多个对象:public static GameObject[] FindGameObjectsWithTag(string tag);
通过标签来查找单个对象:public static GameObject FindWithTag(string tag);
(2)添加子对象
public static GameObject CreatePrimitive(PrimitiveType type);
(3)遍历对象树
foreach (Transform child in transform) {
    Debug.Log(child.gameObject.name);
}
(4)清除所有子对象
foreach (Transform child in transform) {
    Destroy(child.gameObject);
}


5.预设有什么好处?与对象克隆 (clone or copy or Instantiate of Unity Object) 关系?
利用预设,我们可以方便地建立一些重复的物体,而且方便修改这些物体:只需修改预设就可将修改作用作用到所有由该预设生成的对象上。
而克隆则是产生独立的个体,修改其中一个不会对其他的个体产生影响。


6.解释组合模式。并编写验证程序,向组合对象中子对象 cast 消息, 验证组合模式的优点。
组合模式,即“部分—整体模式”,用户对整体进行处理的时候,对每一个部分的对象都进行了处理。整体、部分要实现相同的接口。


父类对象的方法:
void Start() {
     this.BroadcastMessage("check");
}
void check() {
     print("this is a parent.");
}
子类对象的方法:
void check() {
     print("this is a child.");


运行结果:
this is a parent.
this is a parent.
this is a child.



结构:
parent
---child


你可能感兴趣的:(3D游戏开发学习)