使用GetComponent禁用Unity(C#)中的其他脚本时发生NullReferenceException

时间:2019-02-25 02:19:55

标签: c# unity3d

我在游戏中添加了FirstPersonController脚本,以使其在玩家与水碰撞时(我给它加上了“ water”标签)停止了时间并禁用了MouseLook。我能够识别出水并将时间刻度设置为0。但我不知道如何禁用MouseLook。

当我尝试使用此功能时:

GetComponent<MouseLook>().enabled = false;

我得到了错误:

'MouseLook' does not contain a definition for 'enabled' and no accessible extension method 'enabled' accepting a first argument of type 'MouseLook' could be found (are you missing a using directive or an assembly reference?)

因此,我查找了如何删除错误,并将其更改为:

(gameObject.GetComponent("MouseLook") as MonoBehaviour).enabled = false;

但是,当与水碰撞时,它什么也没做,而是给出了错误:

NullReferenceException: Object reference not set to an instance of an object

对于那些想要查看我添加的所有内容的人,这是我所做的唯一更改:

void OnTriggerEnter(Collider target)
    {
        if (target.gameObject.tag == "Water")
        { 
            Time.timeScale = 0.0f;
            Time.fixedDeltaTime = 0.0f;

            (gameObject.GetComponent("MouseLook") as MonoBehaviour).enabled = false;
        }
    }

编辑:这不是What is a NullReferenceException, and how do I fix it?的副本;我了解NullReferenceException的含义。我只是想知道如何在另一个脚本上使用GetComponent,然后将其禁用。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用此方法。将鼠标外观的游戏对象拖到检查器的公共区域中

public Mono<List<ItemServiceResponse>> getItems(ItemServiceRequest itemServiceRequest) {
    return webClient
            .post()
            .contentType(MediaType.APPLICATION_JSON)
            .header(HttpHeaders.ACCEPT, MediaType.APPLICATION_STREAM_JSON.toString())
            .body(Mono.just(itemServiceRequest), ItemServiceRequest.class)
            .retrieve()
            .bodyToFlux(ItemServiceResponse[].class) // <-- array of ItemServiceResponse
            .collectList()
            .log();
}