Как изменить тип содержимого поля ввода в сценарии С# с помощью Unity?

Я использую 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*/;

        }
    }
}

person Otac Aldwin    schedule 12.11.2015    source источник
comment
Пожалуйста, опишите вашу проблему с действительным кодом   -  person Rakin    schedule 12.11.2015
comment
Извините, я предполагал, что этот вопрос будет достаточно простым, чтобы не нуждаться в нем, но я полагаю, что всегда должен поднимать его, а? Я добавил код в ОП.   -  person Otac Aldwin    schedule 15.11.2015


Ответы (1)


Проведя дополнительные поиски за последние пару дней, я нашел ответ на этот вопрос. Оно использует:

mainInputField.contentType = InputField.ContentType.Standard;
mainInputField.characterLimit = 12;//Or any integer

На данный момент mainInputField — это просто переменная типа InputField, и вам нужно зайти в UnityEditor, чтобы установить эту переменную для ссылки на фактическую переменную поля ввода.

person Otac Aldwin    schedule 17.11.2015
comment
упоминается в forum.unity.com/threads/ - person CrandellWS; 16.02.2021