unity 关闭自己脚本_unity中使用代码控制脚本的开启和关闭 enabled

本文讲解了如何在Unity中使用enabled控制脚本的启用与禁用,介绍了scriptName的含义——自定义脚本组件名称,以及如何通过GameObject.Find找到并操作特定脚本。新手必读,解决脚本开关控制难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习中遇到了使用enabled 来控制脚本的开关,中间遇到了一些问题,记录一下,以便遇到类似问题的新手同学少走弯路。

在想使用代码控制脚本的开启和关闭的时候,网上搜索到的解决方案是这样的:

GameObject.Find("ObjectName").GetComponent<scriptName>().enabled=true/false;

刚看到这个公式的时候一脸的懵逼,我主要纠结的是scriptName 是什么?之前做过控制灯光的开关,想了很久不知道这个地方该填写那种类型的参数,后来想想,控制灯光的时候这里天的是灯光的组件 Light。那我挂的脚本呢?应该填什么呢?(基础不到导致的问题)

下面是问题的解答:

首先:Unity中物体上有很多组件,脚本也相当于是一个组件,不过新手常常认为组件只是系统自带的那些,其实自己挂的脚本也是组件的一种。比如下图中所框选的,enabled是控制这里的勾选状态的。所以想通过脚本控制自己或者他人写的另一个脚本的参数,scriptName = 脚本名。补充:ObjectName = 脚本所挂物体的名称,比如下图为:Directional Light

2f9fa7b2eb5a3a27b278d0362777f305.png

代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LightEnabled : MonoBehaviour
{
    private Light mylight;
    private Test03 scri;

    // Start is called before the first frame update
    void Start()
    {
        mylight = GetComponent<Light>();
        scri = GetComponent<Test03>();
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyUp(KeyCode.Space))
        {
            //mylight.enabled = false;
            //关闭脚本,这里是关闭灯光,灯光类似于组件前面勾选状态控制
            mylight.enabled = !mylight.enabled;
            //!的意思是 前面的值取反当为true时候结果为false
            scri.enabled = !scri.enabled;
            //脚本开关状态切换

            //GameObject.Find("Directional Light").GetComponent<Test03>().enabled = !GameObject.Find("Directional Light").GetComponent<Test03>().enabled;
            隐藏脚本第二种写法


        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值