1
나는이 아이템의 목록을 보여주는 배열의 스크립트를 가지고 있습니다.유니티 3D에서 아이템 셔플 링
이제 일이 난 단지 당신이 할 때마다 동일한 목록을 가질 수 있도록 내가하면 생각
새로운 게임을 시작, 5 ~ 10에서 나타난 항목도 단행이이 목록을 원하는되고있다 구현 된 Random.Range
이어야하지만 어디에 있는지 잘 모릅니다.
도와주세요.해야 할 일을 설명하십시오. 나는 아직도 이것에 조금 새로운 감사합니다. 나는 당신이 어떤 항목을 제거하지 않고 그대로 items
를 마칠 수 있습니다 가정
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class RayCasting : MonoBehaviour
{
public float pickupDistance;
public List<Item> items;
#region Unity
void Start()
{
Screen.lockCursor = true;
}
void Update()
{
RaycastHit hit;
Ray ray = new Ray(transform.position, transform.forward);
if (Physics.Raycast(ray, out hit, pickupDistance))
{
foreach(Item item in items)
{
if(Input.GetMouseButtonDown(0))
{
if (item.gameObject.Equals(hit.collider.gameObject))
{
numItemsCollected++;
item.Collect();
break;
}
}
}
}
}
void OnGUI()
{
GUILayout.BeginArea(new Rect(130,400,100,100));
{
GUILayout.BeginVertical();
{
if (numItemsCollected < items.Count)
{
foreach (Item item in items)
{
GUILayout.Label(string.Format("[{0}] {1}", item.Collected ? "" + item.password: " ", item.name));
}
}
else
{
GUILayout.Label("You Win!");
}
}
GUILayout.EndVertical();
}
GUILayout.EndArea();
}
#endregion
#region Private
private int numItemsCollected;
#endregion
}
[System.Serializable]
public class Item
{
public string name;
public GameObject gameObject;
public int password;
public bool Collected { get; private set; }
public void Collect()
{
Collected = true;
gameObject.SetActive(false);
}
public void passwordNumber()
{
password = 0;
Collected = true;
gameObject.SetActive(false);
}
}
귀하의 스크립트는 항목의 이름을 표시하지 않는 것 같습니다. finalItems에 다른 클래스를 만들어야할까요? 그래야 GUI에 넣을 변수를 만들 수 있습니까? – Ghostdre
Im 여전히 무작위로 추출 할 수 없다. Im이 잘못하고 있는지 알 수 없다. foreach 문에있는 모든 항목을 finalItem으로 바꾸고 나머지 코드를 플러그인했지만 임의로 볼 수는 없습니다. – Ghostdre
난 그냥 위의 코드에서 벗어나, 난 그것을 테스트하지 않았습니다. 나는 랜덤 함이 효과가 있다고 생각한다. 런타임 중에 RayCasting 구성 요소를 검사하면 finalItems에 5 개의 항목이 포함되어 있습니까? 그들은 무작위인가? 'items'가 더 이상 사용되지 않도록하려면 (다른 곳에서 사용하는 경우)'Start' 함수의 끝에'items.Clear()'를 호출하여 오류를 던지십시오. 랜덤 함은'finalItems'과 함께 있어야합니다.'Random.Range'가 전부이기 때문입니다. –