PickBadge Unity5.x的GUIText 被UI Text所取代--增加头文件UnityEngine.UI

就从现在正在做的RoomEscapeDemo开始吧。现在才刚刚开始,问题就没断过。

PickBadge是这个RED项目的第一个脚本,功能很简单Collider触发提示,监听角色动作,拾取物品。

这个脚本遇到的第一个问题就是新旧版本的更替,5.0后的脚本使用GUI需要使用头:using UnityEngine.UI;

并且可以直接定义Text: public Text chenggong;  然后再对其属性进行调用和更改,而调用是我遇到的第三个问题。

第二个是逻辑关系的问题。

我们先说第一个:

Unity5.x的GUIText  被UI Text所取代--增加头文件UnityEngine.UI

这个答案直接来自于:https://blog.csdn.net/qq_27885349/article/details/51507114

非常感谢这位朋友提供了非常详细的解答,出于对原版的尊重,我就不贴他的代码了。

第二个问题是在碰撞触发的同时需要监听角色的反应,开始我想的是用两个脚本来写,一个是碰撞一个是监听,但是两个脚本数据互通是个麻烦事情,我比较懒,还好找到了一个脚本的就搞定的代码。这个是来自于Unity Asset Store下载模型自带的脚本里的。

void OnTriggerStay(Collider other) { 
if (alvo == null && abrir == false) {
Vector3 pos = this.transform.position;
pos.y += 0.5f;
pos.z += 0.25f;
pos.x += -0.4f;
alvo = Instantiate (target, pos, Quaternion.identity) as GameObject;
}
if (Input.GetKeyDown (KeyCode.E)) {
abrir = true;
Destroy (alvo.gameObject);
}

}

在碰撞触发的同时如果有键盘按下会触发另外一件事情。原理其实很简单,但是我以前没有这样写过,所以对我来说是个全新的东西。非常感谢无私提供下载的小伙伴。

第三个问题就是刚才提到的GUI调用问题,如何才能知道自身的一个状况呢?


我新建了一个Text,希望他在某一特定时刻出现,并且在固定时间后消失,而且需要这样循环往复很多次。最开始我使用的是SetActive (true/false);   但是很多小伙伴说这样很耗资源,而且只能使用一次,结果果然如此,第一次Text成功显示和消失,第二次就不行了。然后我就想GetComponent这个Text总可以吧,但是我在网上搜了好多答案,比如下面这个:

GetComponent<Button>().enabled = false;

可我就偏要报错:

 Type `UnityEngine.UI.Text[]' does not contain a definition for `enabled' and no extension method `enabled' of type `UnityEngine.UI.Text[]' could be found.

而且还是有小伙伴说GetComponent也很耗资源,哎呀焦头烂额呀,那我要怎么办。最后没办法,只有回到最原始的Unity官方

Scripting API 手册,全英文……对于有英文功底的我来说也是个很头疼的事情。

官方手册地址:https://docs.unity3d.com/ScriptReference/

如果看不懂我强烈推荐:Unity圣典 http://www.ceeger.com/Script/

里面有很多中文翻译,至少逻辑顺序是清楚的。

说远了,我在API手册里找到Text的属性列表,



原来有我需要的enable属性,点进去,Text的enable怎么用一下子就清楚了!!!大笑大笑大笑



光能设置还不够呀,如何才能知道他在进程中的状态呢??哈哈期待下一个脚本吧!!!吐舌头吐舌头吐舌头

猜你喜欢

转载自blog.csdn.net/jennyhigh/article/details/80888576
ui