Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.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# Unity创建一个对象的两个克隆,尽管实例化只被调用一次_C#_Unity3d - Fatal编程技术网

C# Unity创建一个对象的两个克隆,尽管实例化只被调用一次

C# Unity创建一个对象的两个克隆,尽管实例化只被调用一次,c#,unity3d,C#,Unity3d,我正在研究Unity中的一些敌人AI,但当我尝试实例化一个投射物时,它会在完全相同的位置创建两个。即使实例化只调用一次,也会发生这种情况 实例化代码: void Shoot(Vector3 direction){ GameObject EnemyLaser = (GameObject)Instantiate(Resources.Load("EnemyLaser"), FirePosition.transform.position, FirePosition.transform.rota

我正在研究Unity中的一些敌人AI,但当我尝试实例化一个投射物时,它会在完全相同的位置创建两个。即使实例化只调用一次,也会发生这种情况

实例化代码:

void Shoot(Vector3 direction){

    GameObject EnemyLaser = (GameObject)Instantiate(Resources.Load("EnemyLaser"), FirePosition.transform.position, FirePosition.transform.rotation);
    EnemyLaser.renderer.material.color = gameObject.renderer.material.color;
    EnemyLaser.rigidbody.velocity = direction * laserPower;
}
点火代码:

void FireRaycast(){

    Vector3 direction = transform.TransformDirection(Vector3.forward);
    RaycastHit hit;

    Debug.DrawRay(transform.position, direction * range);

    if(Physics.Raycast(transform.position, direction, out hit, range)){

        if(hit.collider.tag == "Player"){

            if(currentTime > fireInterval){
                Shoot(direction);
                currentTime = 0;
            }
        }
    }

    currentTime += Time.deltaTime;

}
这会导致多个问题,例如两个射弹因其碰撞器而不移动,等等


我试着用布尔函数检查函数是否只调用了一次,但它仍然创建了两个对象。

我不知道你的问题是否解决了,但这发生在我身上的原因与前面提到的不同

在我的例子中,我使用在环境中生成对象。我使用的是Input.GetMouseButtonDown0,出于某种原因,每次单击都会返回两次true,从而创建两个预置实例


对我来说,解决方案是对实例化新对象的频率设置时间限制。之后,每次鼠标单击只创建一个实例。

本身已经创建了一个实例。就让它回来吧value@Kay在游戏对象上使用Resources.Load将获得对预置的引用。但它不会自动实例化。@esa感谢您的澄清,我没有用游戏对象加载,而是用文本资源、图像,。。。FireRaycast的频率是多少?你确定只叫过一次吗?当你在射击中设置断点时会发生什么?