(干货)面向对象思维的精髓是什么?

(干货)面向对象思维的精髓是什么?

前言

面向对象是的精髓贴图笔刷,是其能够模拟真实世界的根源所在,面向对象问题也是诸多Unity程序员每天需要苦苦面对的问题。

面向对象思维的精髓是:依据我们所生活的这个物理世界中的奇妙特性,将世界观与代码观融为一体。

Unity中的面向对象

1 场景物体与脚本

看图中标注的1,2,3三大块。【单击图片可放大】

第1块: Hierachy

在场景下面有 Main Camera,Directional Light,Cube和s四个物体,这四个物体都是在场景中实实在在存在的游戏对象,即GameObject 的实例。

第2块:Inspector

当选中场景中的每一个物体,Inspector中将会出现一系列组件,每一个组件(脚本)也都是一个对象,且全是MonoBehaviour 的子类的实例对象。

同时,这些实例对象又是选中物体这个GameObject 的属性。

Cube物体这个实例对象同时也是SelfRotate对象属性(类型为GameObject)的实例对象;

第3块:脚本

SelfRotate.cs脚本是一个类,而把它拖到场景中的s物体上之后,他就自动实例化了一个SelfRotate.cs脚本是一个类,而把它拖到场景中的s物体上之后,他就自动实例化了一个SelfRotate对象,并称为s物体的一个属性。

总结:

你所写的每一个脚本都是 类,且继承自MonoBehavior;3,拖动到物体上的脚本是该类的实例对象3D动画,同时成为该物体的一个属性;4,通过拖动给挂在物体上的脚本赋值时unity代码创建空对象,该对象也成为该脚本的一个成员变量的实例对象;

2 预制件与场景物体

很多人一想到“面向对象”就很直观的想到 代码(脚本),实际这是错误的。面向对象是一种思想,而不是代码的组织方式。

Unity中经常会用到预制件Prefab,Prefab产生如下:

将场景中的物体拖动到Assets里面即可生成。这个过程实际上就是一个 抽象的过程,抽象成一个具有场景中被拖动物体的所有属性(含值)的 类。

因此,所有的Prefab其实都是类,我们可以通过对该类进行实例化从而制造出大量的该类游戏对象。

然而,看到预制件仍然只像一个变蓝的游戏对象备份,并不是代码,但它确确实实是一个类。

总结:

从面向对象的角度来看Unity3D这个开发引擎,你会发现Unity提供的并不是一个又一个孤立的功能unity代码创建空对象,而是创造了一个 场景、代码和游戏对象甚至文件完全通过面向对象思维进行组合的引。

后记:

本文逻辑稍微有点混乱,并没有讲述什么实际应用中能用到的技术,只是提供了一种关于Unity代码、游戏对象之间关系的思维方式。主要是面向初次接触Unity进展缓慢的新手。很多Unity刚入门的小伙伴可能很难处理好他们之间的关系,只知道写一个代个代码,然后绑定到场景物体中就完事了,结果导致工程混乱、代码绑定和依赖关系混乱,自己都不一定分清自己的业务逻辑,或者说自己写的工程过一段时间不看就不知道自己写的什么了。

本文主要目的是提醒新手,尽量用完全面向对象的思维去搞Unity工程,这对Unity进阶具有很大的帮助。

文章来源:https://www.sohu.com/a/226952669_667928