Я использую Unity 4.6.9, кодирую на С#, и все, что я пытаюсь сделать, это изменить то, что начинается как поле ввода с типом содержимого Integer и ограничением символов 2, на поле с типом содержимого Standard и больший лимит символов. Я создал сам объект с помощью самого Unity, поэтому не могу понять, как его изменить в скрипте. Я пытаюсь сделать так, чтобы одно поле отвечало за 2 целых числа и ввод строки, и у меня полностью работает весь код, ЗА ИСКЛЮЧЕНИЕМ изменения типа и ограничения во время работы программы. Я гуглил и пробовал что-то уже почти 2 часа, поэтому надеюсь, что не просто что-то пропустил. Я уже пробовал просматривать документацию Unity, и это мне ничем не помогло.
Чтобы ответить на этот вопрос, мое поле ввода называется InputField, класс, в котором оно находится, называется UIInputField, а фактический вывод из этого поля называется tempInput (данные, которые отправляются из этого поля в программу). И, как я уже сказал, я просто пытаюсь изменить «Тип контента» и «Ограничение символов», я уже разработал код для преобразования строк в целые числа, а также отказоустойчивость, если поле ввода остается пустым, или имеет неправильный тип символа.
если я упустил что-то, что необходимо для ответа на этот вопрос, дайте мне знать.
РЕДАКТИРОВАТЬ: Извините, я пропустил код, думая, что в этом нет необходимости (думал, что это будет простое исправление, которое я еще не понял). Итак, вот код того, что у меня есть до сих пор (я знаю что есть части этой программы, которые могут создать проблему в зависимости от того, что вводит пользователь, и уже знают, как это исправить, но я пытаюсь убедиться, что эта проблема ввода работает правильно, прежде чем беспокоиться об этих проблемах):
using UnityEngine;
using UnityEngine.UI;
using System;
using System.Linq;
using System.Collections.Generic;
using System.Collections;
public class UIInputField : MonoBehaviour {
string[] particNames;
string[] particInit;
int subState = 1;
int state = 1;
int particVar;
// Update is called once per frame
void Update () {
}
//Fix substate handling before building.
public void getInt(string tempInput){
if (state == 1) {
if (Int32.TryParse (tempInput, out particVar))
Debug.Log (particVar);
particNames = new string[particVar];
particInit = new string[particVar];
GameObject.Find ("InputField").characterLimit = 12;
GameObject.Find ("InputField").ContentType = standard;
state++;
} else if (state == 2) {
particNames [subState] = particVar;
subState++;
GameObject.Find ("InputField").characterLimit = 2;
GameObject.Find ("InputField").ContentType = integerNumber;
if (subState == particNames.Length){
state++;
subState = 1;
}
} else if (state == 3) {
if (Int32.TryParse (tempInput, out particVar))
Debug.Log (particVar);
particInit[subState] = particVar;
subState++;
if (subState == particNames.Length) /* The code to move on the the next portion of this program will be here once this portion is working properly*/;
}
}
}