【发布时间】:2018-12-31 09:41:29
【问题描述】:
我制作了一个简单的消息框,它应该向用户显示一条消息。它是一个预制件,做了几件事,主要是实例化时的动画。为了在实例化时运行代码,我使用了Start() 函数。
当我已经知道要发送什么消息但我需要像 constructor 这样的东西时它起作用了,它在 Start() 之前运行,但在 instantiation 上运行并且可以接受参数。
现在,我完全知道我可以实例化、设置消息并运行所有内容 - 所以在我实例化它的地方使用 3 行代码,但我很好奇是否还有另一个更合适的解决方案?我在网上找到的只是实例化,然后做一些事情。
编辑:
我要求显示一个消息框:
var timeBox =
Instantiate(messageBox, penaltySpawnLoc.position, penaltyPrefab.transform.rotation, transform);
var scr = timeBox.GetComponent<MessageBox>();
scr.OnCreated(message);
OnCreated 进行初始化,显示动画,所以基本上一切。
但它需要 string 输入来知道要显示什么,我不想“即时”设置文本值 - 当消息框可见时它会出现一些奇怪的闪烁但未设置文本。
EDIT2:
Instantiation 中的最后一个参数transform 是Canvas,因为这是一个 UI 脚本,所以此脚本已启用。该参数意味着新实例化的GameObject 是它的子节点。
EDIT3:
timeBox 只是messageBox 的一个实例,它们是GameObjects。
一个消息框只使用一次。它的目的是与消息一起出现,并在大约 0.5 秒后淡出并消失。离开后它会自我毁灭。
【问题讨论】:
-
显示要简化的三行代码会很有意义。
-
很公平,马上编辑。
-
抱歉是 4 行,我断了一行。
-
没关系。最后一个参数说“转换”。那是什么,是什么类型?
-
再次编辑:D我真的应该学会第一次表达自己
标签: c# unity3d instantiation