Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中隐藏/显示间距#_C#_Unity3d - Fatal编程技术网

C# 在C中隐藏/显示间距#

C# 在C中隐藏/显示间距#,c#,unity3d,C#,Unity3d,有4个对象A、B、C、D (A=cube1,B=Player,C=cover,D=cap1) D是C的孩子 如果距离(A、B之间)越来越近,则隐藏对象C将更改为SetActive(真) 所以我想展示对象C,但它不起作用 我该换什么 public class distance : MonoBehaviour { public GameObject cube1; public GameObject Player; public GameObject cover;

有4个对象A、B、C、D (A=cube1,B=Player,C=cover,D=cap1) D是C的孩子

如果距离(A、B之间)越来越近,则隐藏对象C将更改为SetActive(真) 所以我想展示对象C,但它不起作用

我该换什么

    public class distance : MonoBehaviour
{
    public GameObject cube1;
    public GameObject Player;
    public GameObject cover;
    public GameObject cap1;
    float cubeDistance;

    void Start()
    {
        cubeDistance = Vector3.Distance(cube1.transform.position, Player.transform.position);
        Debug.Log(cubeDistance);
    }

    // Update is called once per frame
    void Update()
    {
            if (cubeDistance < 30)
            { GameObject.Find("cover").transform.Find("cap1").gameObject.SetActive(true); }
            else { GameObject.Find("cover").transform.Find("cap1").gameObject.SetActive(false); }           
    }
}
公共类距离:单一行为
{
公共游戏对象cube1;
公共游戏对象玩家;
公开游戏对象封面;
公共游戏对象cap1;
浮动容积;
void Start()
{
cubeDistance=Vector3.距离(cube1.transform.position,Player.transform.position);
Log(cubeInstance);
}
//每帧调用一次更新
无效更新()
{
如果(容积小于30)
{GameObject.Find(“cover”).transform.Find(“cap1”).GameObject.SetActive(true);}
else{GameObject.Find(“cover”).transform.Find(“cap1”).GameObject.SetActive(false);}
}
}
如果(立方体间距<30){
cap1.SetActive(真);
}
否则{
cap1.SetActive(假);
}
使用游戏对象引用使对象在游戏中处于活动/非活动状态


注意:GameObject.Find是一项繁重的操作,不应在更新中调用,因为它会影响性能。

它不起作用,因为您只在
开始
功能中检查了一次距离。要检查A和B之间的距离,您需要首先计算
Update
中每帧的距离。因此,在检查距离是否小于30之前,您应该将正在使用的距离代码输入到
更新中。

什么不起作用?什么没有发生,什么正在发生?请解释一点,你已经有了游戏对象“cap1”的参考资料。因此,请执行以下操作:if(cubeDistance<30){cap1.SetActive(true);}else{cap1.SetActive(false);}谢谢我没有那样想,谢谢!没问题:)你能选择我的答案作为正确答案吗?谢谢
 if (cubeDistance < 30){ 
     cap1.SetActive(true);
 }
 else { 
     cap1.SetActive(false); 
 }