Unity中使用new Vector2时提示缺少y坐标的问题求助
Unity中Vector2构造调用报错的解决方法
问题根源
- Vector2构造函数参数错误:
Vector2没有接受另一个Vector2实例作为参数的构造函数,new Vector2(pos1)会被编译器识别为试图调用new Vector2(float x, float y),但只传入了一个参数,因此提示“缺少y坐标”。 - 代码笔误:
newVector2(100f, 100f)中new和Vector2之间缺少空格,属于语法错误。
修正后的代码片段
private IEnumerator BlackScreenCoroutine() { while (true) { yield return new WaitForSeconds(0.1f); GameObject blackObject = Instantiate(Black); blackObject.SetActive(true); // 修正笔误:补全new与Vector2之间的空格 blackObject.transform.localScale = new Vector2(100f, 100f); // 直接赋值已初始化的Vector2变量,无需重新实例化 Hero.transform.position = pos1; // 启动新协程 StartCoroutine(heroCoroutine()); } }
额外说明
transform.position是Vector3类型,Unity支持Vector2到Vector3的隐式转换,直接赋值pos1会自动将z轴设为0;如果需要保留原z轴值,可以写成:Hero.transform.position = new Vector3(pos1.x, pos1.y, Hero.transform.position.z);- 当前协程使用
while(true)会无限创建blackObject实例,极易引发内存泄漏,建议添加终止循环的条件(比如break语句)。
内容的提问来源于stack exchange,提问作者user25482554
相关产品推荐
相关产品推荐

