Unity3D:将文本添加到 PreFab

标签 unity3d unity3d-2dtools

我正在 Unity 5 中制作一个 2d 棋盘游戏风格的游戏,我有一个由几个代表游戏片段的 Sprite 组成的预制件。我想要我的预制件中的一些文本,我可以随着游戏的进行进行更新。

如果我尝试添加文本,它需要一个 Canvas ,但当我创建一个 Canvas 时,会创建一个非常巨大的 Canvas ,看起来至少比相机面积大 1000 倍。如果我尝试将此 Canvas 放入我的预制件中,我的预制件现在由一个巨大的 Canvas 和我的小 Sprite 图像组成。这使得预制件无法定位、计算尺寸或制作动画,或任何其他我想做的事情。

如何向预制件添加文本,并使文本包含在我的预制件尺寸范围内?

到目前为止,这是我尝试过的:

  • 如果我将文本的 Canvas 设置为“渲染模式:世界空间”,我可以将它的矩形变换变小。但是,如果我把它弄得和我的 Sprite 一样小,文本就会变得一团乱麻,难以辨认。我猜这是因为我的 sprite 比 Canvas 小 至少 1000 倍,所以当我放大到足以看到 sprite 时,文本已被放大到遗忘。我的 sprite 比 Canvas 小得多,如果我缩小以查看整个 Canvas ,我的 sprite 甚至都看不到。

  • 如果我使用 UI 图像而不是 sprite 重新创建我的预制件,我就能让事情正常进行。这样,UI 图像和文本都是包含在巨大 Canvas 中的 UI 元素,因此不存在大小差异。但是,我不知道尝试使用 ui 图像而不是 sprite 构建整个游戏会遇到什么陷阱。我是否获得 Sprite 的所有状态能力?

最佳答案

Unity 生成的 Canvas 大 1000 倍,用于与 GUI 相关的对象,这些对象并不打算直接与游戏世界交互,例如分数或按钮。为了有移动的文本,尝试使用 3DText。让文字面向相机,使文字看起来是二维的。您可以在下面的菜单中找到此选项

游戏对象 => 3D 对象 => 3D 文本。

据我了解,您需要做的就是将此 GameObject 作为您的预制件的父级,并在运行时执行一些脚本魔术。

对于高保真文本,要么减小字符大小,要么增大字体大小,或者两者兼而有之。

注意:较大的字符大小会降低保真度,但会占用较少的处理能力。

来源:Unity 5.2.0f3

关于Unity3D:将文本添加到 PreFab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32927695/

相关文章:

unity3d - 适用于 Unity 的 Google Analytics 插件的 PageViews

c# - 当相机移动时,场景中除了玩家之外的所有东西看起来都很模糊 | Unity2D

unity3d-2dtools - Unity Canvas Buttons 在构建时变得很小

c# - 统一评分系统的创建

unity3d-2dtools - Unity3d : No Drag&Drop has been setup

c# - 为具有多个顶点的网格创建单个 MeshCollider

c# - Unity [UNET] 同步非玩家对象转换不工作

unity3d - Unity3d 中的 Signalr 和 WebSocketSharp

c# - IBM Watson Unity 3D SDK 保护服务(即将运行!)

unity3d - 为什么 SpriteRenderer 颜色在运行时没有更新?