Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将对象传递给实例化对象?_C#_Unity3d - Fatal编程技术网

C# 如何将对象传递给实例化对象?

C# 如何将对象传递给实例化对象?,c#,unity3d,C#,Unity3d,我正在制作一个游戏,游戏中有一个炮塔击落目标,并且只有当它们在射程内时。。。至少这是我的想法 现在我能够探测到目标距离,如果距离足够近,炮塔就会发射子弹: if( distanceToTarget < 10 ) { Instantiate(Bullet, transform.position, new Quaternion()); } if(距离目标

我正在制作一个游戏,游戏中有一个炮塔击落目标,并且只有当它们在射程内时。。。至少这是我的想法

现在我能够探测到目标距离,如果距离足够近,炮塔就会发射子弹:

            if( distanceToTarget < 10 )
            {
                Instantiate(Bullet, transform.position, new Quaternion());
            }
if(距离目标<10)
{
实例化(Bullet,transform.position,new Quaternion());
}
唯一的问题是子弹没有目标。在子弹的脚本(C#)上,我定义了一个应该容纳目标的
公共游戏对象目标。但我该怎么设置呢?因为当我实例化子弹时,我知道目标。通常我会直接设置它,比如
Bullet.Target=Target
,但我对Unity是新手,不知道如何设置我实例化的游戏对象的属性。 然后,项目符号的脚本将检查目标是否存在,如果不自行销毁,则返回目标:)


但是如何设置它的目标呢?

这个实例化函数返回实例化对象。 您需要做的只是:

if( distanceToTarget < 10 )
    {
        GameObject obj = (GameObject) Instantiate(Bullet, transform.position, new Quaternion());
        obj.GetComponent<Bullet>().Target = target;
    }
if(距离目标<10)
{
GameObject obj=(GameObject)实例化(Bullet,transform.position,new Quaternion());
obj.GetComponent().Target=Target;
}

在我看来,你似乎把事情复杂化了,因为你似乎想控制局面。我不知道你的炮塔是如何工作的,但我在游戏中看到的大多数炮塔都会在目标出现时开始跟踪目标,然后在距离足够近时开始射击

比如说:

void更新(){
if(canSeeTarget()){
旋转目标();
if(targetRange()){
开始拍摄();
}
}
}

y难道你不把子弹射到敌人的位置吗?“子弹”(游戏对象)是我存储“子弹”预置的变量bullet'预置有一个带有公共游戏对象目标的脚本。我似乎无法设定目标?对不起,我忘了句末的演员阵容。这就是我所能做的/Bullet是一个游戏对象,我可以使用这样的预设?不。试着读一下,你将需要得到组件。这个答案似乎是你需要的,尽管我可能会在Bullet脚本中创建一个SetTarget函数,以便从塔脚本中使用,而不是直接设置变量。您可能希望接受以下答案,以鼓励人们在未来提供帮助:)