3

我正在尝试制作一个脚本来在实例化时设置一个对象。问题是,我不清楚该怎么做。我有这个功能。。

function spawnPlayer()
{
    var CameraScript = GameObject.Find(PlayerPrefab.name).GetComponent("Camera Control");
    Network.Instantiate(PlayerPrefab, spawnObject.position, Quaternion.identity, 0);
}

PlayerPrefab 将是要被实例化的 Prefab。发生这种情况时,我需要将实例化的游戏对象设置在另一个游戏对象上,该游戏对象是相机,并且有一个名为“相机控制”的脚本,里面有一个我正在尝试设置的转换目标。这个怎么做?

4

2 回答 2

21

您发布的代码不可能正确。您正在使用 PlayerPrefab 的名称来查找附加到相机的相机控制脚本吗?按照这种逻辑,在您实例化的那一刻PlayerPrefab,在第二行,您将拥有第二个摄像头。

我认为您想要做的是:实例化播放器预制件并使相机指向播放器

所以我假设CameraControl脚本已创建。在我们开始编码之前,您需要以下内容。

  1. CameraControl脚本附加到场景中的相机。

    在此处输入图像描述

  2. 确保Player脚本附加到 Player Prefab。

    在此处输入图像描述

  3. 有第三个脚本将实例化 PlayerPrefab。我会打电话Instantiator的。将其附加到场景中的空 GameObject 上,将其视为世界 GameObject。我们称之为世界。

  4. 确保Instantiator脚本附加到 World GameObject 并且它指向 PlayerPrefab。

    在此处输入图像描述


代码:实例化器

Instantiator脚本将生成并创建我们将在场景中使用的东西。

 #pragma strict

var PlayerPrefab : GameObject;

function Start () 
{
    // You can add position and rotation to the function call if you like.
    var p = Instantiate(PlayerPrefab) as GameObject;

    // Find the camera script and point to Player's transform.
    Camera.main.GetComponent("CameraControl").SendMessage("setTarget", p.transform);
}

请注意,我使用了 Unity 为您标记场景中的 MainCamera 的事实,因此很容易找到。


代码:CameraControl

CameraControl具有按照您认为合适的方式跟随播放器的逻辑。请注意,目标将指向相机将聚焦的内容。当然,跟随你周围的玩家将不得不写。

var target : Transform;

function setTarget(t : Transform)
{
    target = t;
}

我只是自学了一点 JavaScript。我以前从未使用过它。

于 2014-06-01T04:55:14.357 回答
2

我找到了我的解决方案。

我的问题的意思是将我的相机脚本设置为实例化对象的变换。

我不必用每个对象的脚本值制作许多空对象;我花了几个小时才找到它,因为我不知道 unity 如何处理脚本对象调用。

我是这样做的:

var PlayerPrefab : GameObject;
var spawnObject : Transform;
private var MainCamera : GameObject;

function spawnPlayer()
{
    var player = Instantiate(PlayerPrefab, spawnObject.position, Quaternion.identity);
    MainCamera = GameObject.Find("MainCamera");

    player.name = "Ball";

    if(MainCamera)
    {
        MainCamera.GetComponent.<CameraControl>().target = player.transform;
        Debug.Log("Succeed.");
    }
}

像这样,我的相机将自动具有新实例化对象的变换属性。

于 2014-06-02T00:22:31.773 回答