我无法在 Unity 中为我的预制件分配脚本

Posted

技术标签:

【中文标题】我无法在 Unity 中为我的预制件分配脚本【英文标题】:I cannot assign a script to my prefab in Unity 【发布时间】:2021-11-21 18:56:07 【问题描述】:

我一直试图在实例化分配此脚本后立即获取我的预制件,但我环顾四周,只得到一些模糊的答案,以下脚本位于预制件上:

public float speed;
public float lifeTime;
public float distance;

public ShootingMechanic ShootScript;

public LayerMask whatIsSolid;

private void Start()

    ShootScript = GameObject.Find("gun").GetComponent<ShootingMechanic>();
    Invoke("DestroyProjectile", lifeTime);

void DestroyProjectile()

    //Instantiate(DestroyEffect, transform.position, Quaternion.identity);
    Destroy(gameObject);


public void Update()

    
    transform.Translate(Vector2.up * speed * Time.deltaTime);

    RaycastHit2D hitInfo = Physics2D.Raycast(transform.position, transform.up, distance, whatIsSolid);
    if(hitInfo.collider != null)
    
        if (hitInfo.collider.CompareTag("Enemy"))
        
            DestroyProjectile();
            hitInfo.collider.GetComponent<Enemy>().TakeDamage(ShootScript.damagePerShot);
            
        
    

【问题讨论】:

您发布的代码不完整,而且您的问题含糊不清,请编辑它。 这段代码没有实例化任何东西。 【参考方案1】:

在你的 givin 脚本中你 intantiate 的唯一地方是在 Destroyed 方法中,即使在那里它也是//注释的。 请随意删除此问题

【讨论】:

嗯,你看我有另一个脚本从这个脚本中抓取,比如“stat hub”或类似的东西,因此我想分配这个脚本,这样我就可以抓取一个变量来编辑东西从我的“统计中心” 你知道“公共”变量的用途吗?还是静态的?这些都是不同的,例如,当您想在另一个脚本中读取和更改它时使用公共变量,当您不想更改或从脚本中读取它时使用私有变量,静态变量仅用于在另一个脚本中读取它脚本。 等等,我没有意识到,花了一点时间,但我会在有机会时尝试使用静态变量!

以上是关于我无法在 Unity 中为我的预制件分配脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中为接口分配IP地址?

在Unity中为部分网格创建变换?

无法在 Android 4.4.4 上获得分配

如何在python中为接口分配IP地址?

无法在 Unity 编辑器中加载预制件

在 anylogic 中为 50% 的代理分配优先级