有没有办法在光线投射所在的空隙之外引用光线投射的 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 或其他。
我想从我创建的这个空隙外部访问局部变量 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 或其他。