有没有办法在光线投射所在的空隙之外引用光线投射的 RaycastHit? (统一)

Is there a way to reference a RaycastHit of a raycast outside of the void the raycast was made in? (unity)

我想从我创建的这个空隙外部访问局部变量 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;
            }
        }
    }

通常您会有一个 RaycastHit 变量作为一个 class 变量。 将其设为私有,您可以从 class 中的任何代码部分访问它,并从任何地方将其设为 public。 在这两种情况下,您都可以从 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)。 因此,当您使用传入的 class 变量调用 raycast 方法时,该值将被“填充”。 值“filling”与 accesibity.Your 变量无关,根据变量声明中设置的访问修饰符,public/private 或其他。