C# 当鼠标悬停在游戏对象上时如何显示文本
我的主要问题是关于Mouseover的空白。Unity不想承认“square”和“i”这两个名字。我不能为每个游戏对象编写单独的代码,因为我有大约50个对象需要应用这些代码。我需要有一个特定的数字弹出当我徘徊在一个正方形。我不确定OnMouseOver上的void是否应该在void Start中,但是当它位于void Start之外时,会出现更多的错误。非常感谢您的建议!谢谢C# 当鼠标悬停在游戏对象上时如何显示文本,c#,unity3d,C#,Unity3d,我的主要问题是关于Mouseover的空白。Unity不想承认“square”和“i”这两个名字。我不能为每个游戏对象编写单独的代码,因为我有大约50个对象需要应用这些代码。我需要有一个特定的数字弹出当我徘徊在一个正方形。我不确定OnMouseOver上的void是否应该在void Start中,但是当它位于void Start之外时,会出现更多的错误。非常感谢您的建议!谢谢 using System.Collections; using System.Collections.Generic;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class HeaterRead : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
using (var reader = new StreamReader(@"C:\Users\labom\Documents\Work
Files\Heater_Main_Output.csv"))
{
List<float> listTi = new List<float>();
List<float> listVe = new List<float>();
List<float> listTe = new List<float>();
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
listTi.Add(float.Parse(values[0]));
listVe.Add(float.Parse(values[2]));
listTe.Add(float.Parse(values[3]));
line = reader.ReadLine();
}
// temperature minimum = 300F;
// temperature maximum = 720F;
Mathf.Lerp(0, 1, (listTe[0] / 420F) - 0.71F);
List<GameObject> listS = new List<GameObject>();
for (int i = 1; i < 51; i++)
{
GameObject square = GameObject.Find("Square" + i.ToString());
square.GetComponent<SpriteRenderer>().color = new Color(Mathf.Lerp(0, 1, (listTe[i - 1] / 420F) - 0.71F), 0, 0, 1);
Debug.Log(square.name + " " + listTi[i-1].ToString() + "(s) " + listVe[i-1].ToString() + "(10 m/s) " + listTe[i-1].ToString() + "(F) " + (Mathf.Lerp(0, 1, (listTe[0] / 420F) - 0.71F)) + "% R");
}
void OnMouseOver()
{
Debug.Log(square.name + " " + listTi[i-1].ToString() + "(s) " + listVe[i-1].ToString() + "(10 m/s) " + listTe[i-1].ToString() + "(F) " + (Mathf.Lerp(0, 1, (listTe[0] / 420F) - 0.71F)) + "% R");
}
}
}
public string stringToEdit = "Heater Dashboard";
public string stringToEdit2 = "Expected Readings";
public string stringToEdit3 = "Actual Readings";
void OnGUI()
{
stringToEdit = GUI.TextField(new Rect(300, 10, 115, 20), stringToEdit, 25);
stringToEdit2 = GUI.TextField(new Rect(10, 125, 120, 20), stringToEdit2, 25);
stringToEdit3 = GUI.TextField(new Rect(10, 270, 105, 20), stringToEdit3, 25);
}
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用System.IO;
公共类加热头:单行为
{
//在第一帧更新之前调用Start
void Start()
{
使用(var reader=new StreamReader)(@“C:\Users\labom\Documents\Work
文件\加热器\主\输出.csv“)
{
List listTi=新列表();
List listVe=新列表();
List listTe=新列表();
而(!reader.EndOfStream)
{
var line=reader.ReadLine();
var值=行分割(',');
Add(float.Parse(值[0]);
Add(float.Parse(值[2]);
Add(float.Parse(值[3]);
line=reader.ReadLine();
}
//最低温度=300F;
//最高温度=720F;
数学勒普(0,1,(listTe[0]/420F)-0.71F);
列表=新列表();
对于(int i=1;i<51;i++)
{
GameObject square=GameObject.Find(“square”+i.ToString());
square.GetComponent().color=新颜色(Mathf.Lerp(0,1,(listTe[i-1]/420F)-0.71F),0,0,1);
Debug.Log(square.name+“”+listTi[i-1].ToString()+“(s)”+listVe[i-1].ToString()+“(10 m/s)”+listTe[i-1].ToString()+“(F)”+(Mathf.Lerp(0,1,(listTe[0]/420F)-0.71F)+%R);
}
void OnMouseOver()
{
Debug.Log(square.name+“”+listTi[i-1].ToString()+“(s)”+listVe[i-1].ToString()+“(10 m/s)”+listTe[i-1].ToString()+“(F)”+(Mathf.Lerp(0,1,(listTe[0]/420F)-0.71F)+%R);
}
}
}
公共字符串stringToEdit=“加热器仪表板”;
公共字符串stringToEdit2=“预期读数”;
公共字符串stringToEdit3=“实际读数”;
void OnGUI()
{
stringToEdit=GUI.TextField(新的Rect(300,10,115,20),stringToEdit,25);
stringToEdit2=GUI.TextField(新的Rect(10,125,120,20),stringToEdit2,25);
stringToEdit3=GUI.TextField(新的Rect(10270105,20),stringToEdit3,25);
}
}
首先,您创建了一个本地函数OnMouseOver(),该函数仅在Start()方法中可用
其次。。。您在一个循环内创建了一个局部
平方
变量,因此它不能在循环外使用,这与i
相同,但是您试图在for循环的外部调用这两个变量首先,您创建了一个局部函数OnMouseOver(),它仅在Start()方法中可用
其次。。。您在一个循环内创建了一个局部
平方变量,因此它不能在循环外使用,这与i
相同,但是您试图在for循环的外部调用这两个变量,因此我需要做的就是从开始()删除OnMouseOver(),全局定义变量?事实上,idk你的代码做什么,你想做什么,但如果你想避免错误,这会有帮助所以我需要做的就是从Start()中删除OnMouseOver(),全局定义变量?事实上,idk你的代码做什么,你想做什么,但是,如果您只想避免错误,这可以帮助您使用正确的标记unityscript
是早期Unity版本中使用的一种类似JavaScript风格的自定义语言,现在已经被长期弃用了!另外,您使用某个IDE并不意味着您的问题是关于该IDE的。请使用正确的标签unityscript
是早期Unity版本中使用的一种类似JavaScript风格的自定义语言,现在已经被长期弃用了!而且,仅仅因为您正在使用某个IDE并不意味着您的问题是关于该IDE的。