InputField 数组 单个实例化的问题

甜思思 2018-08-02 02:07:05
private InputField[] InpPos = new InputField[4];

InpPos[i] = 但是用之前必须对单个变量进行实例化

这个咋实例化啊

不能写成InpPos[i] = new InputField(); 报错
...全文
448 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_43470933 2018-10-20
  • 打赏
  • 举报
回复
在for循环里面进行初始化
码农Hiccup 2018-08-24
  • 打赏
  • 举报
回复
也可以动态创建出来,然后getComponent,获取到InputField,然后赋值
yuping511313 2018-08-22
  • 打赏
  • 举报
回复
copy 一个现成的用多少个就copy多少次 用 Instantiate(); so easy
无名剑 2018-08-21
  • 打赏
  • 举报
回复
new Class[]
创建的是数组对象

数组对象需要在创建的时候指定大小,但是里头的类型都是默认值,如果是class那就是null,
需要对值进行再次设置

你也可以直接 new class[]{ new class(), new class(), ...}; 直接初始化数组内的成员

如果是Unity的Component对象,一没人做new Component这样的事情 因为所有的组件都是挂在GameObject上 需要使用GetComponent等方法获取再设置到数组中。当然也可以通过将定义的数组public出去 在界面进行拖拉实现填值操作

小数点666 2018-08-05
  • 打赏
  • 举报
回复
你可以在编辑器里建好InputField,然后拖到你的数组上
MOVCat 2018-08-05
  • 打赏
  • 举报
回复
因为UI的交互控件中的核心脚本本身并不是一个可见的 UI 元素,必须与一个或多个可视 UI 元素结合起来才能显示,因此Unity规定其是不能被公开实例化的,所以只能从资源中加载出来。你可利用GetComponentsInChildren<>方法得到所有的InputField从而进行赋值。
例如:
for (int i = 0; i < inputFields.Length; i++) {
inputFields[i] = GetComponentsInChildren<InputField>()[i];
}
需要注意的一点就是GetComponentsInChildren的检测是从自身开始的,并根据Hierarchy中的顺序进行向下检测

2,535

社区成员

发帖
与我相关
我的任务
社区描述
Unity3D相关内容讨论专区
游戏unity 技术论坛(原bbs)
社区管理员
  • Unity3D
  • 芝麻粒儿
  • 「已注销」
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

Unity3D社区公告:

  1. 社区致力于解决各种Unity3D相关的“疑难杂症”。
  2. 社区不允许发布与Unity3D或相关技术无关内容。
  3. 社区版主邀请各位一道为打造优秀社区不懈努力。

试试用AI创作助手写篇文章吧