C# Private无效,声明了本地函数,但从未使用过
我有两个我无法解决的问题。 修饰符“private”对此项无效。 及 声明了本地函数OnTiggerEnter2D,但从未使用过。有人能帮我看看问题出在哪里吗 谢谢大家!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
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);
}
}
}