问题标签 [unity3d-editor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unity3d-editor - UnityEditor.Undo 在运行时
我想知道 UnityEditor.Undo Destroy、AddComponent 这样的功能是什么,它甚至在设备运行时也能正常运行。
例如,以下代码在 PC 上的编辑器中运行良好。我想知道这是否与设备中的结果相同。
unity3d-editor - unity : undo 移除两个相互引用的对象
我有个问题。
在上面的“a”中,它包含一个引用“b”的字段。类似地,“b”有一个引用“a”的字段。
运行上述代码后撤消时,'b'字段中的'missing'生成。
我应该如何处理这个问题?
unity3d - Unity3D - 加载非常高的纹理(84000x42000)的最佳方式
我正在尝试使用来自 nasa 的高地图定义(4x2 21000x21000 的图块)。所以基本上总纹理为 84000x42000。为此,我创建了一个 4x2 着色器,不幸的是,每个纹理的“最大纹理大小”为 16k,生成的 EXE 不可用(~9go -> 启动时崩溃)。
- 拥有一个 8k 瓦片的 8x4 着色器会更好吗?
- 将每个图块的大小调整为最大纹理大小会更好吗?即:16384 还是 8192?
如果您有任何其他想法让我在不损失太多质量的情况下使用这种纹理,请随时给我任何建议!
非常感谢
c# - Unity3D 中的 AudioSource 不播放 WAV 文件
单击时,我正在运行时更新 Unity3D 中的 AudioSource。
我创建了一个立方体游戏对象。
当我单击多维数据集时,我将属性发送到我的 AudioSource。
注意:这是为了最终播放许多其他 wav 文件,这些文件是通过管道分隔的 wav 文件的字符串数组(存在于 Assets Audio 文件夹中)传入的。
因此,我需要使用每个 CLICK EVENT 更新 AudioSource,从而每次它都会加载从数组中选择的新文件。
好的,Unity3D 编辑器从脚本中显示我的公共变量,并在运行时填充它们(单击多维数据集时)。
我的路径变量在 Unity3D 编辑器中完美显示。
但问题是,尽管编辑器中的Audio Clip 属性显示了橙色的小音频徽标(好像那里/加载了某些东西),但我从 Assets/Audio 文件夹中抓取的文件的名称始终为空。
什么都没有播放,但我没有错误!
以及playOnAwake、volume等属性。所有这些都向我展示了我通过我的脚本表达他们要做什么。
注意:在第一张图片中,路径 变量正确指向 .wav 文件。
为什么我的 .wav 没有播放?
为什么 .wav 文件名没有出现在音频剪辑文本框区域中?
unity3d - Unity3D Editor:如何找到给定资产的所有用途?
Visual Studio 和 Resharper 中存在非常有用的“查找用法”功能,但我在 Unity3D 编辑器中找不到相同的功能。我在 Unity3d 中只看到“选择依赖项”,但我需要相反的。它存在吗?
unity3d - 扩展编辑器以突出显示层次结构的问题
我对扩展 Unity 编辑器非常陌生,并将这个脚本拼凑在一起,突出显示层次结构中的选定对象。问题是,当我在编辑器中并且堆栈顶部(场景名称)出现在树上时,整个层次结构变得不可见!当我向下滚动以使场景名称消失时,它会自行修复。我附上了图片,让您更好地了解正在发生的事情。当我有一堆对象时,这个问题很小,但在新场景中将无法使用。
控制台显示:“对象引用未设置为对象的实例” HierarchyHighlighter.HierarchyWindowItem_CB(Int32 selectionID, Rect selectionRect) (at Assets/HierarchyHighlighter.cs:18)
图像: 正常运行
谢谢您的帮助!
c# - 在 Unity3D 中管理复杂的预制层级
我在几个地方问过这个问题,但还没有完全弄清楚,所以也许这里的一些聪明人会知道如何解决这个问题。
在项目中维护深层嵌套的预制件层次结构的最佳方法是什么?比如说,我们有几个 GUI 屏幕,由较小的通用组件组成。为了简单起见,我们将前者称为“视图”,而将后者称为“组件”。视图处理语义(例如库存视图、商店视图);组件是可配置的,但没有附加任何业务逻辑(例如,按钮只关心其 OnTap 回调/事件处理程序)。
视图和组件都可以嵌套。
GUI 视图需要在多个场景中重复使用。
Unity 中这种方法的主要问题是,任何嵌套层次结构一旦变成预制件,就会失去对其子预制件的引用,就像下面这个(完全虚构,但仍然有效)示例:
- storeView
- UIViewHeader
- UIHeaderLabel<Text>
- UIList
- UIListItem
- UIThumbnail
- UITitleLabel<Text>
- UISubTitleLabel<Text>
- UIPrimaryButton<Button>
- ...
我想将所有这些小型 UI* 组件保留在单独的预制件中,但也保留 storeView 预制件,以便我可以轻松地将其添加到不同的场景中。不幸的是,一旦我们创建了 storeView 预制件,所有的 UI* 预制件引用都会丢失。鉴于此,我们可以尝试一种不同的方法,在这种方法中,我们将其保留为空并选择以下几个选项之一,而不是使用包含内容的 storeView 预制件:
- 在运行时将行为附加到 storeView 并加载子预制件
- 缺点:使设计人员的工作流程更加复杂,将复杂性置于脚本中,从开发人员的角度来看,这也可能更容易出错
- 优点:更容易在场景之间重用 storeView,组件预制可以样式化,全局修改
- 将 storeView 保留为空预制件,并在需要它的每个场景中重新组装它
- 缺点:组件需要手动连接,仍然很容易意外保存整个 storeView 并丢失 prefab 引用
- 优点:保证组件预制参考得到维护,允许视图之间存在细微差异(恕我直言,这实际上是一个问题,因为这些应该属于配置层)
- 将整个 storeView 保存为预制件
- 缺点:扩展性非常大,使得迭代新功能或小的 UX 更改更耗时(额外的 QA、验收测试等......)
- 优点:这是一个快速而肮脏的解决方案,适用于小型项目
- 使用 Prefab Evolution 或类似的
- 缺点:我假设该包将被路线图上的嵌套预制件淘汰?需要取决于 3rd 方代码并且可能不够灵活(这里有什么意见吗,伙计们?)
- 优点:从我看到的许多(混合的)评论中,有些评论非常积极。然而,项目越复杂,这些评论就越不积极。
- 编写一堆自定义编辑器脚本:
- 缺点:耗时,而且 - 似乎应该由平台提供,即使它主要处理游戏
- 优点:完全控制行为,开发人员可以根据设计师的反馈进行改进。有人可能会争辩说,将实现、测试和对设计人员友好的工具作为功能要求进行自律听起来像是一种良好的设计实践(从而减少了技术债务,更容易维护)
这是我个人的,诉理想主义,不切实际的解决方案*:
使用组件化架构,默认情况下,子预制件引用存储在复杂预制件中。在内部将它们视为移动设备(Cocoa)上的 UIView 和子视图,或者 React 中的组件类或更好的功能组件 - React/Cycle/Elm/任何与 FRP 配合得很好的东西(是的,我知道这些方法在很多方面都不同,但关键是可组合性,可以通过功能组合、装饰器等来实现……)。
- 缺点:我认为我在这里遇到的困难来自于我缺乏 Unity 的经验,并且有一个更明显的,也许是惯用的解决方案(我很乐意要求:))
优点:使测试和迭代新功能更容易,使预制件更强大,同时不会失去任何好处(如果我错了,请纠正我,我仍然熟悉 Unity)
请不要以为我期望 Unity 提供所有这些,但这是可能的方向之一,即使其中 1% 是正确的。
澄清一下,这并不是对 Unity 的抱怨,作为一名以前使用移动(原生)和 Web 工作的开发人员,我发现它解决了我的许多问题,以及其中一些解决方案的简单程度,这给我留下了深刻的印象。