【问题标题】:Is there a way to reference a RaycastHit of a raycast outside of the void the raycast was made in? (unity)有没有办法在光线投射的虚空中引用光线投射的 RaycastHit? (统一)
【发布时间】:2021-12-18 21:34:35
【问题描述】:

我想从我进入的这个 void 之外访问局部变量 raycastHit,这可能吗?

private void HandleHookShotStart()
    {
        

        if (TestInputDownHookShot())
        {
            if (Physics.Raycast(Shoulder.transform.position, cam.transform.forward, out RaycastHit raycastHit))
            {
                //Hit Something
                debugHitpointTransform.position = raycastHit.point;
                hookshotPosition = raycastHit.point;
                hookShotSize = 0f;
                HookShotTransform.gameObject.SetActive(true);
                HookShotTransform.localScale = Vector3.zero;

                state = State.HookShotThrown;
            }
        }
    }

【问题讨论】:

    标签: unity3d raycasting


    【解决方案1】:

    通常你会有一个RaycastHit 变量作为类变量。 将其设为私有,您可以从类中代码的任何部分访问它,并将其从任何地方公开。 在这两种情况下,您都可以从 void 方法外部访问 raycastHit 变量。

    public RaycastHit raycastHit; 
    private void HandleHookShotStart()
    {
        if (TestInputDownHookShot())
        {
            if (Physics.Raycast(Shoulder.transform.position, cam.transform.forward, out raycastHit)) //type RaycastHit  removed in the call
            {
                //Hit Something
                debugHitpointTransform.position = raycastHit.point;
                hookshotPosition = raycastHit.point;
                hookShotSize = 0f;
                HookShotTransform.gameObject.SetActive(true);
                HookShotTransform.localScale = Vector3.zero;
    
                state = State.HookShotThrown;
            }
        }
    }
    

    请注意,out 不是在创建变量。 “out 关键字导致参数通过引用传递”(docs)。 因此,当您使用传入的类变量调用 raycast 方法时,该值将被“填充”。 “填充”值与可访问性无关。根据变量声明处设置的访问修饰符,公共/私有或其他,您的变量将可访问。

    【讨论】:

    • 成功了!但是现在我在引用它的行中有问题if (raycastHit.transform.gameObject.layer == groundMask) { Debug.Log("heavy"); state = State.HookShotFlyingPlayer; } 没有语法问题,但存在统一性问题。它在(raycastHit.transform.gameObject.layer == groundMask) 上给出错误,错误为Object Reference not set to an instance of an object
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    相关资源
    最近更新 更多