我制作了一个简单的“消息框”,用于向用户显示信息。它是预制件,主要在实例化时执行一些操作,包括动画。为了在实例化时运行代码,我使用了“Start()”函数。当我已经知道要发送的消息时,它可以正常工作,但我需要像“构造函数”一样的东西,在“实例化”时运行,并且可以接受参数。
现在,我完全意识到我可以实例化、设置消息并运行所有内容——使用3行代码来实例化它,但我想知道是否有另一种更合适的解决方案?我在网上找到的都是实例化,然后做一些事情。
编辑: 我的调用消息框显示的方式:
现在,我完全意识到我可以实例化、设置消息并运行所有内容——使用3行代码来实例化它,但我想知道是否有另一种更合适的解决方案?我在网上找到的都是实例化,然后做一些事情。
编辑: 我的调用消息框显示的方式:
var timeBox =
Instantiate(messageBox, penaltySpawnLoc.position, penaltyPrefab.transform.rotation, transform);
var scr = timeBox.GetComponent<MessageBox>();
scr.OnCreated(message);
OnCreated
是初始化、显示动画等的函数,基本上包括所有内容。但是它需要一个 string
输入来知道要显示什么,我不想在程序运行时设置文本值 - 这会导致消息框可见但文本未设置时出现一些奇怪的闪烁。
编辑2:
Instantiation
中的最后一个参数 transform
是此脚本所在的 Canvas
,因为这是一个 UI 脚本。该参数表示新实例化的 GameObject
是其子级。
编辑3:
timeBox
只是一个 messageBox
的实例,它们都是 GameObject
。每个消息框只使用一次。它的目的是在出现消息后约 0.5 秒淡出并移开,在移开后销毁自身。
timeBox
和messageBox
是什么类型?你还会再使用timeBox
吗?它唯一被用到的地方是在你写的timeBox.GetComponent<MessageBox>();
这一行代码中。 - Programmer