Да, есть несколько способов. Один из них может использовать FindObjectOfType
для получения ссылки на компонент Homepage
. Затем вы можете получить доступ ко всем public
членам, как в вашем случае ipField
, который является InputField
, так что вы можете просто прочитать его InputField.text
ipAddress = FindObjectOfType<Homepage>().ipField.text;
В случае, если в любом случае есть только один экземпляр Homepage
.
Если возможно, вы должны напрямую ссылаться на него в Registration
, используя public
или [SerializeField] private
поле типа
public class Registration : MonoBehaviour
{
// Reference this via the Unity Inspector by drag&drop the according GameObject here
[SerializeField] private Homepage homepage;
private void Awake()
{
// You could still have a fallback here
if(! homepage) homepage = FindObjectOfType<Homepage>();
}
...
}
, а затем позже просто используйте
ipAddress = homepage.ipField.text;
Обратите внимание, что FindObjectOfType
завершится неудачно, если соответствующий объект неактивен или compomemt отключен!
Вы также можете go придумывать и соблюдать принципы инкапсуляции, предоставляя public
только очень необходимую вещь, используя свойство только для чтения
public class Homepage : MonoBehaviour
{
// This still allows to reference the object in the Inspector
// but prevents direct access from other scripts
[SerializeField] private InputField ipField;
// This is a public ReadOnly property for reading the IP from other scripts
public string IP => ipField.text;
...
}
Тогда обратно в Registartion
вы просто использовали бы
ipAdress = homepage.IP;
Наконец, указав c для поля IP / URL, вы можете использовать Regex , чтобы проверить правильность ввода .