【发布时间】:2016-10-15 20:31:24
【问题描述】:
当玩家进入对撞机时,如何启用/禁用多个游戏对象的网格渲染器?这是我的代码,但它不起作用。
using UnityEngine;
using System.Collections;
public class SueloManager : MonoBehaviour {
private GameObject suelo;
void Start ()
{
suelo = GameObject.FindGameObjectsWithTag ("SueloWireframe");
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player") {
suelo.GetComponent<Renderer> ().enabled = false;
Debug.Log ("Oculta suelo");
}
}
void OnTriggerExit(Collider other)
{
if (other.gameObject.tag == "Player") {
suelo.GetComponent<Renderer> ().enabled = true;
Debug.Log ("Aparece suelo");
}
}
}
【问题讨论】:
-
您所说的“多个游戏对象”是什么意思,请解释一下您所说的“不起作用”是什么意思。你看到日志了吗?
-
在学习游戏引擎之前先学习使用语言。您将
FindGameObjectsWithTag的结果(GameObject的数组)分配给只能容纳一个的变量。在那之后,你需要一个循环,在所有这些中实际执行一些操作。我同意 Programmer 的观点,显示错误,显示您尝试过的内容,解释预期结果。 -
@Programmer 控制台没有出现错误,但是当玩家进入对撞机时,只有一个对象被禁用。
-
这不是真的。该代码将无法编译。它应该给你编译时错误。虽然我已经为您提供了答案,但我建议您按照@Kroltan 提到的去做。在继续之前学习基本的 C#。大多数人跳到 Unity 并错过了基本的东西。