Я написал алгоритм на чистом C# в VS. Алгоритм работает нормально. Но при переносе этого алгоритма в Unity я столкнулся с вот такими проблемами:
Синтаксис:
Используется csharp
using System;
using System.Collections;
using UnityEngine;
class Program
{
Random rnd = new Random(); // Генератор случайных чисел
...
...
void Beginer()
{
etaj = Convert.ToByte(rnd.Next(0, 3));
...
...
}
...
...
}
using System.Collections;
using UnityEngine;
class Program
{
Random rnd = new Random(); // Генератор случайных чисел
...
...
void Beginer()
{
etaj = Convert.ToByte(rnd.Next(0, 3));
...
...
}
...
...
}
На Random ругается - конфликт с Random-ом от UnityEngin
Assets/Content/Scripts/Client/LevelsTools/LevelGenerator.cs(7,9): error CS0104: `Random' is an ambiguous reference between `System.Random' and `UnityEngine.Random'
Первым делом залез в справку и нашел:
Random.Range
static function Range (min : float, max : float) : float
Description
Returns a random float number between and min [inclusive] and max [inclusive] (Read Only).Синтаксис:Используется csharpusing UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
public GameObject prefab;
void Start() {
Vector3 position = new Vector3(Random.Range(-10.0F, 10.0F), 0, Random.Range(-10.0F, 10.0F));
Instantiate(prefab, position, Quaternion.identity) as GameObject;
}
}
static function Range (min : int, max : int) : int
Description
Returns a random integer number between min [inclusive] and max [exclusive] (Read Only).
If max equals min, min will be returned. The returned value will never be max unless min equals max.Синтаксис:Используется csharpusing UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
void Awake() {
Application.LoadLevel(Random.Range(0, Application.levelCount));
}
}
В принципе понятно, тоже самое только возвращает float.
Но у меня вопрос - можно ли как-то использовать стандартный Random C#-а? А-то блин переделывать очень дофига.
Пробовал писать и так
Синтаксис:
Используется csharp
System.Random rnd = new Random()
тоже не помогло(
Отключить using System; нельзя так как у меня в скрипте используется Convert.ToByt()
И вторая проблема ругается на двумерный массив.
Синтаксис:
Используется csharp
levelContent[startEtaj, 0] = 'S';
на эту и подобные строки кода выдает ошибки
Assets/Content/Scripts/Client/LevelsTools/LevelGenerator.cs(514,56): error CS1012: Too many characters in character literal
Assets/Content/Scripts/Client/LevelsTools/LevelGenerator.cs(514,57): error CS1525: Unexpected symbol `<internal>'
В VS проблемы такой не было(
Заранее спасибо за ответы.