【发布时间】:2018-07-22 14:48:13
【问题描述】:
这是我在学校项目游戏中的光线投射代码。如果我将脚本放在对象上,一切正常。但是如果我关闭 Unity 并重新打开我的项目,“jakDaleko” = distance 的值将保持锁定在 1129.395,而不是每帧都更改。
我应该改变什么,这样它每次都能正常工作,而不仅仅是第一次按下播放按钮。
这是我的代码。
脚本 1 = 光线投射
public class SmerDivani : MonoBehaviour {
public static float VzdalenostOdCile;
public float VzdalenostOdCileInterni;
// Update is called once per frame
void Update() {
RaycastHit Hit;
if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out Hit)) {
VzdalenostOdCileInterni = Hit.distance;
VzdalenostOdCile = VzdalenostOdCileInterni;
}
}
}
第二个脚本
public class TabuleMesto1 : MonoBehaviour
{
public float JakDaleko;
public GameObject AkceTlacitko;
public GameObject AkceText;
public GameObject UIQuest;
public GameObject ThePlayer;
public GameObject NoticeCam;
void Update() {
JakDaleko = SmerDivani.VzdalenostOdCile;
}
void OnMouseOver() {
if (JakDaleko <= 5) {
AkceTlacitko.SetActive(true);
AkceText.SetActive(true);
}
if (JakDaleko > 5)
{
AkceTlacitko.SetActive(false);
AkceText.SetActive(false);
}
if (Input.GetButtonDown("Akce")) {
if (JakDaleko <= 5) {
AkceTlacitko.SetActive(false);
AkceText.SetActive(false);
UIQuest.SetActive(true);
NoticeCam.SetActive(true);
ThePlayer.SetActive(false);
}
}
}
void OnMouseExit() {
AkceTlacitko.SetActive(false);
AkceText.SetActive(false);
}
}
【问题讨论】:
-
附注:在 C# 中,就像在其他所有编程语言中一样,通常的做法是用英文命名所有标识符。阅读
JakDaleko = SmerDivani.VzdalenostOdCile的开发人员不知道这个东西是做什么的,如果他/她不懂你的语言。 -
@dymanoid 谢谢。我会尽量用 ENG 写一切。
-
另外,
VzdalenostOdCile和VzdalenostOdCileInterni的意义何在?一个是静态的,我看到了静态的用法,但是你为什么要那样做呢?VzdalenostOdCileInterni是否在任何地方使用?