如何将游戏对象分配给脚本而不拖放到检查器中?

因此,我有一个脚本,进入一辆车,当在给定的游戏对象上检测到鼠标向下时,它会将玩家传送到汽车,转动玩家的控制器,并将玩家相机切换到汽车摄像头。

问题是我不想将汽车游戏对象,玩家游戏对象和两个摄像头拖放到检查器中,以使其工作。

相反,我希望它的脚本分配所有的这些游戏对象的基础上点击在车上的玩家。 这些游戏物体是玩家的车,两个摄像机(一个是玩家,另一个是玩家)。 我不知道如何去解决这个问题,所以我很感激所有的帮助。

以下是玩家脚本的检查员的照片: 在这里输入图像描述

另外这里是我的C#代码:

using System.Collections; using System.Collections.Generic; using UnityEngine; public class GetInCar : MonoBehaviour { public GameObject player; public GameObject car; public Camera CarCam; public Camera PlayerCam; void Start () { } void OnMouseDown () { if (Input.GetKey (KeyCode.Mouse0)) { player.transform.position = car.transform.position; print("MovedToCar"); GameObject.Find ("Player").GetComponent<CharacterController> ().enabled = false; PlayerCam.enabled = false; CarCam.enabled = true; } } } 

我不会在汽车脚本上使用“OnMouseDown()”,而是使用播放器脚本中的raycast ,例如在播放器脚本中:

 void Update(){ if(Input.GetKey(KeyCode.Mouse0)){ RaycastHit rayInfo; if(Physics.Raycast(transform.position, transform.forward, out rayInfo)){ GetInCar gic = rayInfo.collider.GetComponentInParent<GetInCar>(); if(gic != null){ // If it is null, then it probably is the wrong object. // [...] // Here you can call some method like "gic.GetIn(CharacterController c)" // where c is the player script. } } } } 

请注意,如果您的播放器具有碰撞器对象,则必须稍微修改此示例(这可以通过基于图层的碰撞检测来实现)