Список игровых объектов, которые не добавляются должным образомC#

Место общения программистов C#
Anonymous
Список игровых объектов, которые не добавляются должным образом

Сообщение Anonymous »

Я создаю магическую систему для своей игры, в которой вы можете рисовать разные символы для произнесения разных заклинаний. Эта система использует точки на планшете для рисования, чтобы определить, какой глиф вы рисуете. Прежде чем я заставлю систему по-настоящему творить чудеса, я хочу отобразить глифы, которые вы нарисовали, с помощью средства рендеринга линий. По какой-то причине кажется, что список игровых объектов, связанных с каждым глифом, неоднократно пытается добавить одну и ту же точку, а не ту, на которую указывает луч.
Это мой текущий код:

Код: Выделить всё

using System.Collections.Generic;
using System.Linq;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.XR.Interaction.Toolkit;
using UnityEngine.XR.Interaction.Toolkit.Interactors;

public class magicPen : MonoBehaviour
{
public Transform castPoint;
private bool checkingForMagicPoints = false;
public LineRenderer lineRenderer;
private Vector3[] rayPoints;
private List glyphs = new List();
private List glyphObjects = new List();
public GameObject glyphPrefab;

//create an action to be referenced in the editor
public void setCheckingState(bool state)
{
//set the checkingForMagicPoints variable to the declared bool
checkingForMagicPoints = state;

//check the new state of checkingForMagicPoints
//specify a new glyph if you just began clicking the magic pen
if (checkingForMagicPoints)
{
glyphs.Add(new List());
}
//instantiate a new visual glyph when you stop pressing the magic pen
else
{
Instantiate(glyphPrefab);

glyphObjects.Add(glyphPrefab);

}
}

public void CheckForMagicPoint()
{
//use this type to gain info from raycasts
RaycastHit hit;
//define the layer that we want the raycast to hit
int layer = 3;
//change it into a form that the raycast can read
int layerMask = 1  go != null).Select(go => go.transform.position).ToArray());
}
}
}

}

Когда я снимаю проверку, которая предотвращает повторное добавление одной и той же точки, позиции средств рендеринга линий глифа оказываются в одной и той же позиции много раз, но эти точки не одинаковы для всех средств рендеринга отдельных строк, а скорее каждый рендеринг строк повторяет свою точку бесконечно, что заставляет меня думать, что он неоднократно добавляет один и тот же игровой объект в список, но я не могу понять, почему.
Для дополнительной ясности используйте переменную glyphs — это список списков игровых объектов, где каждый список соответствует одному из средств рендеринга глифов. К нему добавляется новый список, когда вы начинаете нажимать на перо, а новые игровые объекты добавляются в последний (текущий) список, когда raycast попадает в игровой объект с указанной маской слоя. Кроме того, эта игра создана в виртуальной реальности и использует набор инструментов взаимодействия XR, если это важно.
Если кто-нибудь знает, как это исправить, было бы здорово!

Вернуться в «C#»