加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 实体是否有能力自我绘制?

发布时间:2020-12-15 04:28:22 所属栏目:百科 来源:网络整理
导读:这是一个简单的问题,但它是我永远不会确定的问题.这主要是在游戏开发的背景下.假设你有一个实体,比如船只或角色.应该(我知道这是一个意见问题)这个对象包含一个Draw方法吗? (也许实现一个IDrawable接口) 在查看某些游戏项目中的源代码时,我发现这在很多方面
这是一个简单的问题,但它是我永远不会确定的问题.这主要是在游戏开发的背景下.假设你有一个实体,比如船只或角色.应该(我知道这是一个意见问题)这个对象包含一个Draw方法吗? (也许实现一个IDrawable接口)

在查看某些游戏项目中的源代码时,我发现这在很多方面都有所体现.有时,有一个单独的类可以接受一个实体基础对象并根据其属性(纹理,位置等)绘制它.其他时候,实体被赋予自己的绘制方法,并且它们能够自我渲染.

我希望这个问题不是太主观.有时我听到人们说绘画这样的东西应该与物体完全分开,他们不应该知道如何画画或者有能力.有些更实用,并且觉得这种设计对象具有这种能力是很好的.

我自己也不太确定.我没有发现任何类似的问题,因为它可能有点主观,或者任何一种方法都没问题,但我想听听SO有什么说法,因为这些设计决定每天困扰着我的发展.这些小的决定,例如对象A是否应该具有执行功能B的能力,或者是否违反某些设计原则.

我确信有些人会说,如果有必要的话,我可以稍后去做我的直觉和重构,但这就是我一直在做的事情,现在我想听听决定某些对象何时应该保持某些能力的实际理论.

我想我正在寻找的是一些启发式方法,用于确定给定对象应具有多少权限.

解决方法

你应该选择最简单的实现方式.即使事实证明你做出了错误的选择,你也可以亲身体验为什么一种方法比另一种方法更好,并且可以在将来应用这些知识.这是有价值的知识,可以帮助您以后做出决定.我发现,我学习某些优点的最佳方法之一就是做错了几次(不是故意记住你),这样你就可以很好地理解一种方法的缺陷.

我处理它的方式是:一个实体拥有绘制它所需的所有信息.例如构成它的精灵,它们相对于实体中心的位置.如果有的话,实体本身做的很少.它实际上只是一个存储其他系统运行信息的地方.

世界渲染代码处理绘制世界以及其中的所有实体.它查看给定的实体并在正确的位置绘制每个精灵,应用任何必要的相机变换或效果或者你有什么.

这就是我的大多数游戏的运作方式.实体也不了解物理学或任何东西.它只是一个数据集合,其他系统运行.它不知道物理学,但它确实有一些Box2D结构挂在它上面Box2D在物理更新阶段操作.与AI或输入和其他一切相同.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读