离散仿真引擎基础——井字棋

简答题

解释游戏对象(GameObjects)和资源(Assets)的区别与联系。

对象:对象直接出现在游戏场景中,是资源整合的具体表现,对象一般有玩家,敌人,游戏场景,摄像机等虚拟父类,这些父类没有实例化,而他们的子类实例化并包含了这些游戏对象,我们可以对这些对象进行操作。
资源:资源可以是我们自定义或下载下来的素材,可以被多个对象使用,有些资源可以做为模板并实例化为对象。资源文件夹(Asset)通常包含脚本,预设,场景,声音等
——CSDN hellowangld

在Unity3D中,游戏对象(GameObjects)是对象(Object)的子类,同时是场景内其他所有个体的基类。游戏对象可以使用资源(Assets),同时资源也可以被实例化为对象。

下载几个游戏案例,分别总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构)

资源的目录组织结构:
  • Models 模型文件

  • Plugins 主要是DLL的外部插件文件

  • Prefabs 预储存文件

  • Resources 动态加载的资源文件

  • Scenes 场景文件

  • Scripts 脚本代码文件

  • Sounds 音效文件

  • Textures 所有的贴图

对象组织的结构

在这里插入图片描述

编写一个代码,使用 debug 语句来验证 MonoBehaviour 基本行为或事件触发的条件。

基本行为包括 Awake() Start() Update() FixedUpdate() LateUpdate(),常用事件包括 OnGUI() OnDisable() OnEnable()

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {
   
    // 基本行为包括 Awake() Start() Update() FixedUpdate() LateUpdate(),常用事件包括 OnGUI() OnDisable() OnEnable()

    void Awake()
    {
   
        Debug.Log("awake");
    }

    // Use this for initialization
    void Start () {
   
        Debug.Log("start");

	}
    // Update is called once per frame
    void Update () {
   
        Debug.Log("update");
	}

    void FixedUpdate()
    {
   
        Debug.Log("fixedupdate");
    }

    void LateUpdate()
    {
   
        Debug.Log("lateupdate");
    }

    void OnGUI()
    {
   
        Debug.Log("ongui");
    }

    void OnDisable()
    {
   
        Debug.Log("ondisable");
    }

    void OnEnable()
    {
   
        Debug.Log("onenable");
    }
}

查找脚本手册,了解GameObject,Transform,Component 对象

分别翻译官方对三个对象的描述(Description)

GameObject: 游戏对象是统一体中代表人物、道具和场景的基本对象。它们本身并没有完成多少工作,但是它们充当组件的容器,组件实现真正的功能。

Transform: Transform组件决定场景中每个对象的位置、旋转和比例。每个GameObject(游戏物体)都有一个变换。

Component: 组件是游戏中对象和行为的螺母和螺栓。它们是每个游戏对象的功能部件。

描述下图中 table 对象(实体)的属性、table 的 Transform 的属性、 table 的部件

https://pmlpml.github.io/unity3d-learning/images/ch02/ch02-homework.png)]

table的对象是GameObject,第一个选择框是activeSelf 属性,第二个文本框是对象名称,第三个选择框为static属性。

Transform中的属性有位置、旋转、比例。

table的部件有Transform,Mesh Filter,Box Collider,Mesh Renderer。

用 UML 图描述三者的关系(请使用 UMLet 14.1.1 stand-alone版本出图)

在这里插入图片描述

整理相关学习资料,编写简单代码验证以下技术的实现:

  • 查找对象
	var obj = GameObject.Find("table");
	if(obj != null) {
   
        Debug.Log("find!");
    }
  • 添加子对象
    GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
	obj.name = "a cube";
    obj.transform.position = new Vector3(0, 0, 2);
    obj.transform.parent = this.transform;
  • 遍历对象树
    GameObject[] objs = GameObject.FindObjectsOfType<GameObject>();
    foreach (GameObject obj in objs) {
   
        Debug.Log(obj.name);
    }
  • 清除所有子对象
    int childCount = transform.childCount;
    for</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值