C# 如何遇到错误?“;InvalidOperationException:由于对象的当前状态,操作无效;在使用System.Linq时 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 使用System.Linq; 公共类qtpye:单一行为{ 公共线路; 公共边缘准直器2D ec; 公共名单点; 二等兵布尔乔克=真; //用于初始化 无效开始(){ } //每帧调用一次更新 无效更新(){ if(jok==false&Vector3.Distance(points.Last(),transform.position)>0.7f) { 点。添加(变换。位置); lr.positionCount=点数.Count; lr.SetPosition(points.Count-1,新矢量3(Camera.main.ScreenToWorldPoint(Input.mousePosition).x,Camera.main.ScreenToWorldPoint(Input.mousePosition).y,transform.position.z)); } } void OnMouseDown() {jok=false; Debug.Log(“f”); } void OnMouseUp() {jok=true; } }
我试图使用线渲染器,但是出现错误C# 如何遇到错误?“;InvalidOperationException:由于对象的当前状态,操作无效;在使用System.Linq时 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 使用System.Linq; 公共类qtpye:单一行为{ 公共线路; 公共边缘准直器2D ec; 公共名单点; 二等兵布尔乔克=真; //用于初始化 无效开始(){ } //每帧调用一次更新 无效更新(){ if(jok==false&Vector3.Distance(points.Last(),transform.position)>0.7f) { 点。添加(变换。位置); lr.positionCount=点数.Count; lr.SetPosition(points.Count-1,新矢量3(Camera.main.ScreenToWorldPoint(Input.mousePosition).x,Camera.main.ScreenToWorldPoint(Input.mousePosition).y,transform.position.z)); } } void OnMouseDown() {jok=false; Debug.Log(“f”); } void OnMouseUp() {jok=true; } },c#,list,unity3d,C#,List,Unity3d,我试图使用线渲染器,但是出现错误 if(jok==false&Vector3.距离(points.Last(),transform.position)>0.7f) 那是 InvalidOperationException:由于当前错误,操作无效 对象系统的状态。Linq.Enumerable.Last[Vector3] (IEnumerable`1来源)qtpye.Update()(位于Assets/qtpye.cs:18) 如果列表为空,将返回InvalidOperationException
if(jok==false&Vector3.距离(points.Last(),transform.position)>0.7f)
那是
InvalidOperationException:由于当前错误,操作无效
对象系统的状态。Linq.Enumerable.Last[Vector3]
(IEnumerable`1来源)qtpye.Update()(位于Assets/qtpye.cs:18)
如果列表为空,将返回InvalidOperationException。在调用此函数之前,必须确保列表至少包含一个点。例如,您可以在列表为空时添加第一个点,并对其他点的距离进行验证
另外,你的if语句是错误的。您没有使用AND运算符,它是&,因为您忘记了一个&
最后,你可以这样做:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
public class qtpye : MonoBehaviour {
public LineRenderer lr;
public EdgeCollider2D ec;
public List<Vector3> points;
private bool jok=true;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (jok ==false&Vector3.Distance(points.Last(),transform.position)>0.7f)
{
points.Add (transform.position);
lr.positionCount = points.Count;
lr.SetPosition (points.Count - 1, new Vector3 (Camera.main.ScreenToWorldPoint (Input.mousePosition).x, Camera.main.ScreenToWorldPoint (Input.mousePosition).y, transform.position.z));
}
}
void OnMouseDown()
{jok = false;
Debug.Log ("f");
}
void OnMouseUp()
{jok = true;
}
}
您的
if
语句语法错误,因为它声明if(X==false&Y>Z)
使用double&&
修复错误
if (jok ==false && (points.Count == 0 || Vector3.Distance(points.Last(),transform.position)>0.7f Vector3.Distance(points.Last(),transform.position)>0.7f))