C# 当鼠标悬停在游戏对象上时如何显示文本

C# 当鼠标悬停在游戏对象上时如何显示文本,c#,unity3d,C#,Unity3d,我的主要问题是关于Mouseover的空白。Unity不想承认“square”和“i”这两个名字。我不能为每个游戏对象编写单独的代码,因为我有大约50个对象需要应用这些代码。我需要有一个特定的数字弹出当我徘徊在一个正方形。我不确定OnMouseOver上的void是否应该在void Start中,但是当它位于void Start之外时,会出现更多的错误。非常感谢您的建议!谢谢 using System.Collections; using System.Collections.Generic;

我的主要问题是关于Mouseover的空白。Unity不想承认“square”和“i”这两个名字。我不能为每个游戏对象编写单独的代码,因为我有大约50个对象需要应用这些代码。我需要有一个特定的数字弹出当我徘徊在一个正方形。我不确定OnMouseOver上的void是否应该在void Start中,但是当它位于void Start之外时,会出现更多的错误。非常感谢您的建议!谢谢

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的。