C# Private无效,声明了本地函数,但从未使用过

C# Private无效,声明了本地函数,但从未使用过,c#,unity3d,C#,Unity3d,我有两个我无法解决的问题。 修饰符“private”对此项无效。 及 声明了本地函数OnTiggerEnter2D,但从未使用过。有人能帮我看看问题出在哪里吗 谢谢大家! using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyAI : MonoBehaviour { private object collision; public flo

我有两个我无法解决的问题。 修饰符“private”对此项无效。 及 声明了本地函数OnTiggerEnter2D,但从未使用过。有人能帮我看看问题出在哪里吗

谢谢大家!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EnemyAI : MonoBehaviour

{
    private object collision;
    public float _speed = 3.0f;

    void Start()
    {

    }

    // Update is called once per frame
    void Update() {

        private void OnTriggerEnter2D(Collider2D other)
        {
            if (other.tag == "Laser")
            {
                Destroy(other.gameObject);
                Destroy(this.gameObject);
            }

            {
                transform.Translate(Vector3.down * _speed * Time.deltaTime);

                if (transform.position.y < (-5.71f))
                {
                    float Randomx = Random.Range(-5, 5);
                    transform.position = new Vector3(Randomx, 5.71f, 0);
                }


            }
        }
    }
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类EnemyAI:单一行为
{
私人物品碰撞;
公共浮子_速度=3.0f;
void Start()
{
}
//每帧调用一次更新
无效更新(){
私有无效OnTiggerEnter2D(碰撞R2D其他)
{
如果(other.tag==“激光”)
{
销毁(其他游戏对象);
摧毁(这个游戏对象);
}
{
transform.Translate(Vector3.down*_speed*Time.deltaTime);
if(变换位置y<(-5.71f))
{
float Randomx=随机范围(-5,5);
transform.position=新矢量3(Randomx,5.71f,0);
}
}
}
}
}
在C#中,可以在函数中包含函数(有关的详细信息。要修复错误,请执行以下操作之一:

从内部拉出功能
Update
private void Update(){}
私有无效OnTiggerEnter2D(碰撞R2D其他)
{
如果(other.tag==“激光”)
{
销毁(其他游戏对象);
摧毁(这个游戏对象);
}
transform.Translate(Vector3.down*_speed*Time.deltaTime);
if(变换位置y<(-5.71f))
{
float Randomx=随机范围(-5,5);
transform.position=新矢量3(Randomx,5.71f,0);
}
}
或者这个:

从本地方法中删除访问权限(它们不能是私有/公共等)
private void Update()
{
无效OnTiggerEnter2D(碰撞的R2D其他)
{
如果(other.tag==“激光”)
{
销毁(其他游戏对象);
摧毁(这个游戏对象);
}
transform.Translate(Vector3.down*_speed*Time.deltaTime);
if(变换位置y<(-5.71f))
{
float Randomx=随机范围(-5,5);
transform.position=新矢量3(Randomx,5.71f,0);
}
}
}

编辑:当然,如果您在另一个方法中使用
OnTriggerEnter
,Unity将无法找到它,因此代码将无法工作。

您已将
OnTriggerEnter2D
方法放置在
Update
方法中。我认为您不是有意这样做的。您的意思是同时在方法中调用
OnTriggerEnter2D
更新
?因为仅定义这样的本地方法并不意味着将从封闭方法调用它。感谢@juharr和我将其移出void Update,它修复了最初的问题,但现在我得到了一个cs1525“文件结尾”意外符号错误。请平衡括号。明白了。感谢大家的帮助e、 虽然这有助于解释本地方法,但这对OP没有帮助,因为Unity无法识别OnTiggerEnter2D事件。
private void Update() { }
private void OnTriggerEnter2D(Collider2D other)
{
    if (other.tag == "Laser")
    {
        Destroy(other.gameObject);
        Destroy(this.gameObject);
    }

    transform.Translate(Vector3.down * _speed * Time.deltaTime);

    if (transform.position.y < (-5.71f))
    {
        float Randomx = Random.Range(-5, 5);
        transform.position = new Vector3(Randomx, 5.71f, 0);
    }
}
private void Update() 
{
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "Laser")
        {
            Destroy(other.gameObject);
            Destroy(this.gameObject);
        }

        transform.Translate(Vector3.down * _speed * Time.deltaTime);

        if (transform.position.y < (-5.71f))
        {
            float Randomx = Random.Range(-5, 5);
            transform.position = new Vector3(Randomx, 5.71f, 0);
        }
    }
}