Questions tagged «unity»

Unity是一个跨平台的游戏创建系统,专注于简单的美术制作流程。它由游戏引擎和集成开发环境组成。游戏引擎的脚本基于Mono。

2
如何减少渲染树的性能影响?
我正在制作一款低聚风格的游戏。我的地形上有一些水,我想要很多树木。目前,我已经放置了10,000棵树。每棵树包含不超过200个三角形,因此它们不太费力。 主要问题是有湖泊,而且湖泊很大。您实际上看不到湖另一侧的任何树木,这看起来真的很糟糕,尤其是当您走到那里而突然出现树木时。 要解决此问题,我必须增加树的距离,以便您可以在湖的另一侧看到相当多的树,但这会降低性能至40-50fps,并且游戏中几乎没有其他内容。我正在使用GTX 1080,如果可以的话。 我怎样做才能使游戏在更多树木下运行得更快?

4
如何在最小/不使用可视化编辑器的情况下在Unity中构建游戏?
我想完全用C#编写游戏。在搜索引擎时,我找到了Unity3D,但是所有教程和文档都在谈论可视化编辑器和Unity IDE,您可以在其中单击并指向以创建场景和脚本。 我不想那样做。我更喜欢完整的代码覆盖范围,而不是设计师从我身上抽象出来的东西。我只想从头开始编写纯C#代码,或者如果需要,可以编写Unity脚本。我找不到有关此操作的任何解释或文档。我该如何使用Unity来构建游戏并最小化(或不使用)可视化编辑器?
24 c#  unity 

2
使用四元数:我该怎么办?(没有数学)
我是游戏开发人员,没有学习数学。所以我只想使用四元数作为工具。为了能够进行3D旋转,有必要使用四元数(或矩阵,但在本问题中,我们先保留四元数)。我认为对于许多开发人员来说,使用它们很重要。这就是为什么我想分享我的知识并希望填补我的空缺。现在.... 据我了解: 四元数可以描述两件事: 3d对象的当前方向。 对象可以执行的旋转变换。(rotationChange) 您可以使用四元数: 乘法: 四元数endOrientation =四元数旋转Change *四元数currentOrientation; 因此,例如:我的3D对象向左旋转90°-我乘的旋转就是向右旋转180°,最后我的3D对象90°向右旋转。 四元数rotationChange =四元数endRotation * Quaternion.Inverse(startRotation); 这样,您将获得一个rotationChange,可以将其应用于另一个方向。 Vector3 endPostion =四元数rotationChange * Vector3 currentPosition; 因此,例如:我的3D对象位于位置(0,0,0)上,并且我乘以的旋转是向右旋转180°,我的端点类似于(0,-50,0)。在四元数内部有一个轴-以及围绕该轴的旋转。您围绕该轴Y度旋转点。 Vector3 rotationOffsetVector =四元数rotationChange * Vector3 currentOffsetVector; 例如:我的开始方向显示为UP-(0,1,0),我乘以的旋转方向是向右旋转180°,我的结束方向显示为向下。(0,-1,0) 混合(Lerp和Slerp): 四元数currentOrientation =四元数.Slerp(startOrientation,endOrientation,插值器) 如果插值器为1:currentOrientation = endOrientation 如果插值器为0:currentOrientation = startOrientation Slerp插值更精确,而Lerp插值更高效。 我的问题: 我到目前为止所解释的一切都正确吗? 四元数可以做到这一点吗?(不可以) 您还能对他们做什么? 两个四元数之间的点积和叉积有什么好处? 编辑: 更新了问题并提供了一些答案

7
如何避免Unity中紧密的脚本耦合?
不久前,我开始与Unity合作,但我仍然在紧密耦合脚本的问题上挣扎。如何构造代码以避免出现此问题? 例如: 我想在单独的脚本中拥有健康和死亡系统。我还希望拥有不同的可互换步行脚本,这些脚本可让我更改玩家角色的移动方式(如Mario中的基于物理的惯性控件,以及Super Meat Boy中的紧致,抽搐控件)。Health脚本需要保留对Death脚本的引用,以便在玩家的Health达到0时可以触发Die()方法。Death脚本应该保留对所使用的walking脚本的一些引用,以禁止在死亡时行走(I厌倦了僵尸)。 我通常创建界面,比如IWalking,IHealth和IDeath,这样我就可以改变在心血来潮这些元素没有打破我的代码的其余部分。我希望它们由播放器对象上的单独脚本设置,例如PlayerScriptDependancyInjector。也许这脚本将会为社会IWalking,IHealth和IDeath属性,使依赖可以通过从检查关卡设计师通过拖放相应的脚本进行设置。 这样一来,我可以轻松地将行为添加到游戏对象中,而不必担心硬编码的依赖项。 Unity中的问题 该问题是,在团结,我不能在检查暴露的接口,如果我写我自己的检查人员,引用不会得到序列化,这是一个很大的不必要的工作。这就是为什么我只剩下编写紧密耦合的代码的原因。我的Death脚本公开了对脚本的引用InertiveWalking。但是,如果我决定要让玩家角色紧密控制,就不能只拖放TightWalking脚本,就需要更改Death脚本。糟透了 我可以应付,但是每次我做这样的事情,我的灵魂都会哭。 Unity中接口的首选替代方法是什么?我该如何解决这个问题?我找到了,但是它告诉了我我已经知道的,并且没有告诉我如何在Unity中做到这一点!这也讨论了应该做什么,而不是如何做,也没有解决脚本之间紧密耦合的问题。 总而言之,我觉得这些是为那些具有游戏设计背景来到Unity的人而写的,他们只是学习如何编写代码,而对于普通开发人员而言,关于Unity的资源很少。有什么标准的方法可以在Unity中构造代码,还是我必须弄清楚自己的方法?
24 c#  unity  scripting 

3
UnityEngine.Random和System.Random有什么区别?
这有什么不同 int randomNumber = UnityEngine.Random.Range(0, 10); 和这个 // on top of the class private System.Random _rnd = new System.Random(); // inside a methode of the same class int randomNumber = _rnd.Next(0, 10); 我知道System.Random必须始终在类的顶部进行初始化,UnityEngine.Random不需要使用什么。我也知道这System.Random适用于实习生“时钟”,“随机”数字是基于此的。 我的问题是,现在UnityEngine.Random和System.Randomand 之间还有其他区别,并且更适合在Unity项目中使用巫婆代码?
24 unity  c#  random 

1
如何防止不适当的广告出现在我的游戏中?
我的游戏实现了Unity广告,并且在设计时考虑了通用受众。因此,我宁愿不要在其中显示18多个广告(或视情况而定甚至在13多个广告),尤其是因为它也会吸引年轻的受众。我的问题是,如何防止年龄不适当的广告出现?有没有一种方法可以简单地设置Unity广告的年龄限制或内容限制?我能找到的唯一设置是COPPA切换,这会引起其他问题(更不用说它对广告没有任何作用)。我已经在仪表板中查看了一段时间,并且已经尝试过对其进行研究,但是事实是它们已经转移到集中式服务页面,重定向所有旧链接(在此过程中将其断开),重新整理仪表板中的设置,以及在主题上的 404d FAQ帖子都无济于事。根据评级屏蔽广告也可以,因为我要发布到Google Play,所以我必须获得一个评级。 编辑:第二个链接有时仅404s。在问这个问题之前,我碰巧每次都得到它。我想运气不好。



4
在Unity游戏中保存玩家的进度
我正在使用Unity游戏引擎制作游戏。我想保存玩家的进度,包括等级,经验值,选择的角色等。目前,我正在使用playerprefs,但我想知道这是否也适用于将在其移动设备(Android / iOS)上运行此游戏的玩家作为台式机(OSX / PC)?如果没有,那么我应该如何保存此信息?我想在清除每个阶段后自动保存玩家进度。
22 android  unity 

2
Unity精灵中用于单位的像素属性是什么?
我开始学习Unity进行2D开发。 因此,我将几个精灵导入游戏中,我不禁注意到默认存在的“以像素为单位”属性100。我通常将其设置为1。我为什么需要将此值不同于1?或者,更广泛地说,是否有理由让多个精灵具有不同的
22 2d  unity 

3
我如何为恒星建模?
我正在尝试在Unity中为一颗星星建模,并且可以完成一些工作,但这并不理想。目前,我使用的是一个大球体,其自发光材料的表面上包含星形纹理,并使用聚光灯来营造星光效果,如下所示: 虽然有效,但看起来并不是最大的。我正在寻找一种与喀尔巴太空计划如何塑造恒星类似的效果: 我怎样才能达到这种效果?

2
如何实现快捷草效果?
我一直在看一些来自Rocket League和FIFA等游戏的屏幕截图: 我开始怀疑有人能达到捷径的效果。 它是着色器吗?它是实际的几何形状吗?还是只是纹理四边形?如果有人能指出我的方向,将不胜感激。

5
如何使粒子发光并向周围投射光线?
我目前正在尝试在黑暗的森林中制作萤火虫效果。该水平仪的光线非常暗,播放器是少数几个光源之一。为了让玩家更好地看到关卡,我尝试使发光的萤火虫随机出现在地图上。一种方法是使用粒子系统。但是我不能使粒子在周围环境中发光。有没有办法做到这一点?


2
如何根据对象是什么设计上下文菜单?
我正在寻找“右键单击选项”行为的解决方案。 基本上,当右键单击游戏时,游戏中的所有项目都可以根据对象的不同显示一组选项。 右键单击不同情况的示例: 库存:头盔显示选项(装备,用途,掉落,描述) 银行:头盔显示选项(Take 1,Take X,Take All,Description) 楼层:头盔显示选项(“乘车”,“在这里行走”,“描述”) 显然,每个选项都以某种方式指向执行所说内容的特定方法。这是我要解决的问题的一部分。对于单个项目有这么多的潜在选项,我如何以不至于太混乱的方式设计班级? 我曾考虑过继承,但是这可能会很漫长,而且链条可能很大。 我已经考虑过使用接口,但这可能会限制我一点,因为我无法从Xml文件加载项目数据并将其放入通用的“ Item”类中。 我将期望的最终结果基于一个名为Runescape的游戏。可以在游戏中右键单击每个对象,并根据其位置以及位置(存货,楼层,银行等)显示不同的选项集,供玩家进行交互。 我将如何实现这一目标?首先,我应该采用哪种方法,决定应该显示哪些选项,单击后如何调用相应的方法。 我正在使用C#和Unity3D,但是提供的任何示例都不必与它们中的任何一个相关,因为我追求的是与实际代码相反的模式。 非常感谢您的帮助,如果我在问题或期望的结果中不清楚,请发表评论,我会尽快解决。 到目前为止,这是我尝试过的: 实际上,我已经设法实现了一个通用的“ Item”类,其中包含了不同类型项目的所有值(额外攻击,额外防御,成本等)。这些变量由Xml文件中的数据填充。 我曾考虑过将每个可能的交互方法都放置在Item类中,但是我认为这是令人难以置信的混乱且糟糕的形式。我可能仅通过使用一个类而不将其子类化为不同的项目而采用了错误的方法来实现这种系统,但这是我可以从Xml加载数据并将其存储在类中的唯一方法。 我之所以选择从Xml文件中加载我的所有物品,是因为该游戏可以容纳40,000多个物品。如果我的数学正确,则每个项目的班级很多。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.