【发布时间】:2021-07-06 16:17:45
【问题描述】:
所以我制作了一个脚本来投射光线并查看鼠标光标是否正在查看一个对象,然后另一个脚本将使用它来打开/关闭该对象上的脚本。第一个脚本正在工作,光线投射一个,但我无法弄清楚如何正确禁用/启用该脚本的大纲脚本。现在,大纲始终处于打开状态。所以基本上,我该如何修复它,使其仅在突出显示时打开? (我也是 stackoverflow 的新手,所以如果格式很奇怪,那就是为什么)
光线投射代码:
public static string selectedObject;
public string internalObject;
public RaycastHit theObject;
public LayerMask layerMask;
public bool rayObjectHit;
void Start()
{
}
void Update()
{
// Script for highlighting object
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out theObject, layerMask))
{
selectedObject = theObject.transform.gameObject.name;
internalObject = theObject.transform.gameObject.name;
}
if (Physics.Raycast(ray, out theObject, layerMask) == false)
{
selectedObject = GameObject.Find("none").name;
}
// Script for clicking on object
if (Input.GetMouseButtonDown(0))
{
if (Physics.Raycast(ray, out theObject, layerMask))
{
Debug.Log(theObject.transform.gameObject.name);
}
}
}
大纲代码:
{
public GameObject selectedObject;
public static string objectSelected;
public bool lookingAtObject = false;
public bool outlineOn;
public static string outlinedObject;
// Start is called before the first frame update
void Start()
{
selectedObject = GameObject.Find("none");
}
// Update is called once per frame
void Update()
{
selectedObject = GameObject.Find(CastingToObject.selectedObject);
lookingAtObject = true;
if (selectedObject = GameObject.Find("none"))
{
lookingAtObject = false;
}
if (lookingAtObject == true)
{
selectedObject.GetComponent<GameObject>();
while (lookingAtObject == true)
{
outlineOn = true;
selectedObject.GetComponent<Outline>().enabled = true;
}
}
if (lookingAtObject == false)
{
outlineOn = false;
selectedObject.GetComponent<Outline>().enabled = false;
}
}
}
【问题讨论】:
标签: c# visual-studio unity3d