Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.85 KB | None | 0 0
  1. public class ObjectChooserScript : MonoBehaviour {
  2.  
  3. public int param1 = 0;
  4. public int param2 = 0;
  5. public int param3 = 0;
  6. public int param4 = 0;
  7. public int param5 = 0;
  8. public int param6 = 0;
  9.  
  10. void Start () {
  11.  
  12. param1 = Random.Range (0, 4);
  13. param2 = Random.Range (0, 7);
  14. param3 = Random.Range (0, 5);
  15. param4 = Random.Range (0, 5);
  16. param5 = Random.Range (0, 9);
  17. param6 = Random.Range (0, 2);
  18. }
  19.  
  20. public class ObjectSpawnerScript : MonoBehaviour {
  21. public Transform myObject;
  22. public int maxObjects = 10;
  23. public int curObjects = 0;
  24.  
  25. // Use this for initialization
  26. void Start () {
  27. for (int i = curObjects; i < maxObjects; i++) {
  28. // тут просто определяются координаты, по которым создается объект
  29. Instantiate (myObject, new Vector3(Random.Range (-9, 9)
  30. , Random.Range(-3, 6)
  31. , Random.Range(0, 4)), Quaternion.identity);
  32. curObjects++;
  33.  
  34. }
  35. }
  36.  
  37. public class Param
  38. {
  39. public int Value;
  40. public int TLim;
  41. public int DLim;
  42.  
  43. public Param(int d, int t)
  44. {
  45. TLim = t;
  46. DLim = d;
  47. Value = d;
  48. }
  49. }
  50.  
  51. public class Spawner : MonoBehaviour
  52. {
  53. Param[] param = new Param[5];
  54. GameObject PrefabWithObjectChooserScript;
  55. static List<int[]> Combinations = new List<int[]>();
  56.  
  57. void Start()
  58. {
  59. param[0] = new Param(0, 2);
  60. param[1] = new Param(0, 3);
  61. param[2] = new Param(0, 4);
  62. param[3] = new Param(0, 4);
  63. param[4] = new Param(0, 3);
  64.  
  65.  
  66. }
  67. // Вызвать эту функцию для генерации нового объекта.
  68. public void Generate()
  69. {
  70. if(Combinations.Count > 0)
  71. {
  72. var go = Instantiate(PrefabWithObjectChooserScript) as GameObject;
  73. go.GetComponent<ObjectChooserScript>().Init(Combinations[Combinations.Count - 1]);
  74. Combinations.RemoveAt(Combinations.Count - 1);
  75.  
  76. return;
  77. }
  78.  
  79.  
  80.  
  81. for (int i = param.Length - 1; i >= 0; --i)
  82. {
  83. if (param[i].Value != param[i].TLim)
  84. {
  85. int[] values = new int[param.Length];
  86. for (int g = 0; g < param.Length; ++g)
  87. values[g] += param[g].Value;
  88.  
  89. var go = Instantiate(PrefabWithObjectChooserScript) as GameObject;
  90. go.GetComponent<ObjectChooserScript>().Init(values);
  91.  
  92. ++param[i].Value;
  93. for (int j = i + 1; j < param.Length; ++j)
  94. {
  95. param[j].Value = param[j].DLim;
  96. }
  97.  
  98. return;
  99. }
  100. }
  101.  
  102. Debug.Log("Больше нет доступных комбинаций");
  103. }
  104.  
  105.  
  106. public static void ReturnValues(int [] values)
  107. {
  108. Combinations.Add(values);
  109. }
  110. }
  111.  
  112.  
  113.  
  114. public class ObjectChooserScript : MonoBehaviour
  115. {
  116. public int [] param = new int[5];
  117.  
  118. public void Init(int[] p)
  119. {
  120. for (int i = 0; i < p.Length; ++i)
  121. param[i] = p[i];
  122. }
  123.  
  124. private void OnDestroy()
  125. {
  126. Spawner.ReturnValues(param);
  127. }
  128. }
  129.  
  130. public void InitParams(params int[] myparams)
  131. {
  132. param1 = myparams[0];
  133. param2 = myparams[1];
  134. // ... и т.д.
  135. }
  136.  
  137. void Start () {
  138. param6 = Random.Range (0, 2);
  139. }
  140.  
  141. List<int[]> arrayList = new List<int[]>();
  142.  
  143. using System;
  144. using System.Collections.Generic;
  145. using System.Linq;
  146.  
  147. List<int[]> arrayList = new List<int[]>();
  148.  
  149. int[] GenerateRandom() {
  150. int[] params = new int[5];
  151. params[0] = Random.Range (0, 4);
  152. params[1] = Random.Range (0, 7);
  153. params[2] = Random.Range (0, 5);
  154. params[3] = Random.Range (0, 5);
  155. params[4] = Random.Range (0, 9);
  156.  
  157. // тут логика сравнения массива с массивами в списке
  158. // Если есть совпадение, то перевызываем метод GenerateRandom()
  159. foreach (var array in arrayList) {
  160. if (myparams.Length == array.Length && myparams.Intersect(array).Count() == myparams.Length) {
  161. return GenerateParams();
  162. }
  163. }
  164.  
  165. // если всё норм, то добавляем в список:
  166. // возвращаем массив:
  167. arrayList.Add(myparams);
  168. return myparams;
  169. }
  170.  
  171.  
  172. for (int i = curObjects; i < maxObjects; i++) {
  173. // Берем индивидуальный список уникальных параметров
  174. var myparams = GenerateRandom();
  175. // Инстанциируем объект
  176. var myobj = Instantiate (myObject, new Vector3(Random.Range (-9, 9)
  177. , Random.Range(-3, 6)
  178. , Random.Range(0, 4)), Quaternion.identity);
  179. // пихаем в него параметры
  180. myobj.InitParams(myparams);
  181. curObjects++;
  182.  
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement