Oop 在游戏引擎上构建一个API是一个好主意吗;为了可移植性,API是什么?
让我先介绍一下背景知识: 我对构建一个模块化的游戏很感兴趣。这是从Unity3D中的一个项目开始的。当我编写的游戏非常接近Unity3D的API时,我想知道,我是否应该为游戏构建自己的API,以防将来我想/不得不离开Unity3D?(到另一个游戏引擎,或者更好,直接使用OpenGL/DirectX) 然后我对将我的游戏转移到虚幻引擎4很感兴趣,所以我尽我最大的努力抽象我的游戏,其中大部分游戏都明确地将Unity3D的API应用到自己的API中。仍然依赖Unity3D的类的一个示例是myOop 在游戏引擎上构建一个API是一个好主意吗;为了可移植性,API是什么?,oop,optimization,abstraction,Oop,Optimization,Abstraction,让我先介绍一下背景知识: 我对构建一个模块化的游戏很感兴趣。这是从Unity3D中的一个项目开始的。当我编写的游戏非常接近Unity3D的API时,我想知道,我是否应该为游戏构建自己的API,以防将来我想/不得不离开Unity3D?(到另一个游戏引擎,或者更好,直接使用OpenGL/DirectX) 然后我对将我的游戏转移到虚幻引擎4很感兴趣,所以我尽我最大的努力抽象我的游戏,其中大部分游戏都明确地将Unity3D的API应用到自己的API中。仍然依赖Unity3D的类的一个示例是myPlaye
Player
class()
//Vector和GameObject都是Unity3D类
私人玩家(玩家id,矢量位置)
{
gameobjectplayerprefab=Resources.Load(“玩家”);
playerObject=GameObject。实例化(playerPrefab、position、Quaternion.identity)为GameObject;
playerObject.AddComponent().Bind=this;
playerObject.name=“Player”+id.ToString();
coreObject=playerObject.transform.FindChild(“核心”).gameObject;
bodyObject=playerObject.transform.FindChild(“Body”).gameObject;
玩家[(int)id]=这个;
UnityLink(playerObject);
}
长话短说,我放弃了对我已经做过的东西进行抽象,决定重写它。无论如何,这一切的意义在于:
在已经存在的API(游戏引擎)上构建自己的API是否值得
虽然我觉得似乎没有其他方法可以实现我对游戏的“模块化”愿景,但我对制作API的主要关注点是:
- 间接费用罚金值不值得(如果有)?或者更确切地说
- 在我的例子中,在另一个API之上构建一个API是否“过火”
如果您以后不想移动到其他游戏引擎-是。是。对不。按照你喜欢的顺序。你的游戏玩家将看到你构建的游戏,而不是你代码库中的技术抽象。把时间花在构建更好的抽象上不会让你的游戏更有趣。
//Vector and GameObject are both Unity3D classes
private Player(PlayerID id, Vector position)
{
GameObject playerPrefab = Resources.Load<GameObject>("Player");
playerObject = GameObject.Instantiate(playerPrefab, position, Quaternion.identity) as GameObject;
playerObject.AddComponent<UnityObjectScript>().Bind = this;
playerObject.name = "Player " + id.ToString();
coreObject = playerObject.transform.FindChild("Core").gameObject;
bodyObject = playerObject.transform.FindChild("Body").gameObject;
players[(int)id] = this;
UnityLink(playerObject);
}