018-游戏对象访问操作控制 srt字幕文件

1
00:00:00,000 --> 00:00:02,000
创建游戏的过程

2
00:00:02,000 --> 00:00:10,000
也是定义游戏物体与环境或与其他游戏物体交互的过程

3
00:00:10,000 --> 00:00:16,000
这就离不开在一个游戏物体中选择或引用其他的游戏物体

4
00:00:16,000 --> 00:00:22,000
甚至是使用其他游戏物体中的组件或脚本等

5
00:00:22,000 --> 00:00:32,000
unity的脚本接口提供了多种方式来查找或访问其游戏物体

6
00:00:32,000 --> 00:00:35,000
或其中所包含的组件

7
00:00:35,000 --> 00:00:41,000
接下来我们就来看一下如何来访问其他的游戏物体

8
00:00:41,000 --> 00:00:46,000
首先在场景中创建一个球体

9
00:00:46,000 --> 00:00:56,000
然后为球体添加一个名称为SphereScript的脚本

10
00:00:56,000 --> 00:00:59,000
也就是球体脚本

11
00:00:59,000 --> 00:01:06,000
在球体脚本中添加了一个公共变量也就是球体半径

12
00:01:06,000 --> 00:01:12,000
并且添加了一个自定义的函数DoSomething

13
00:01:12,000 --> 00:01:16,000
在函数中把一个单词打印出来

14
00:01:16,000 --> 00:01:21,000
接下来看一下物体访问的第一种方式

15
00:01:21,000 --> 00:01:28,000
即定义变量然后在属性编辑器中来引用其他的物体

16
00:01:28,000 --> 00:01:36,000
我们可以在Cube物体的属性编辑器中通过定义变量的方式

17
00:01:36,000 --> 00:01:38,000
来引用球体对象

18
00:01:38,000 --> 00:01:45,000
此时我们可以看一下Cube物体的脚本定义

19
00:01:45,000 --> 00:01:53,000
在脚本中我们定义了一个变量 其类型为Transform

20
00:01:53,000 --> 00:02:00,000
由于此变量是公共变量因此它会显示在Cube物体的属性编辑器中

21
00:02:00,000 --> 00:02:07,000
然后我们可以使用拖动的方式来为此变量赋值

22
00:02:07,000 --> 00:02:10,000
来引用其他的物体

23
00:02:10,000 --> 00:02:17,000
在Update函数中我们重新设置引用物体的颜色为红色

24
00:02:17,000 --> 00:02:22,000
回到unity然后选择Cube物体

25
00:02:22,000 --> 00:02:29,000
在其属性编辑器中可以看到脚本中定义的变量显示在其中

26
00:02:29,000 --> 00:02:36,000
此时可以通过拖动的方式来选择需要引用的物体

27
00:02:36,000 --> 00:02:44,000
此处引用了Sphere物体 也可以通过单击选择框来选择其他物体

28
00:02:44,000 --> 00:02:53,000
单击播放按钮播放场景 可以看到在播放场景后

29
00:02:53,000 --> 00:02:58,000
球体的颜色由白色变为红色

30
00:02:58,000 --> 00:03:02,000
这说明成功地在一个物体中引用了另一个物体

31
00:03:02,000 --> 00:03:07,000
除了可以直接引用物体类型

32
00:03:07,000 --> 00:03:10,000
也可以通过定义变量的方式

33
00:03:10,000 --> 00:03:14,000
来引用或访问其他物体中的脚本

34
00:03:14,000 --> 00:03:18,000
例如在NewBehaviourScript脚本中

35
00:03:18,000 --> 00:03:22,000
我们可以重新定义target变量的类型

36
00:03:22,000 --> 00:03:25,000
为球体物体中所包含的脚本

37
00:03:25,000 --> 00:03:28,000
也就是SphereScript类型

38
00:03:28,000 --> 00:03:43,000
在Start函数中调用了SphereScript中的DoSomething

39
00:03:43,000 --> 00:03:48,000
也就是自定义函数DoSomething

40
00:03:48,000 --> 00:03:54,000
它会在控制台中输出单词 hello

41
00:03:54,000 --> 00:03:59,000
保存脚本然后切换到unity中

42
00:03:59,000 --> 00:04:03,000
在Cube物体的属性编辑器中

43
00:04:03,000 --> 00:04:10,000
target变量的类型已经变成为SphereScript

44
00:04:10,000 --> 00:04:16,000
也就是为此变量赋值的类型必须为SphereScript

45
00:04:16,000 --> 00:04:21,000
此时仍然可以拖动球体对象为此变量赋值

46
00:04:21,000 --> 00:04:27,000
因为在球体对象中包含有SphereScript脚本

47
00:04:27,000 --> 00:04:29,000
单击play按钮播放场景

48
00:04:29,000 --> 00:04:33,000
可以看到在球体改变颜色的同时

49
00:04:33,000 --> 00:04:38,000
在控制台中也输出了球体脚本中自定义函数

50
00:04:38,000 --> 00:04:41,000
DoSomething的执行结果

51
00:04:41,000 --> 00:04:45,000
接下来我们看一下第二种访问物体的方式

52
00:04:45,000 --> 00:04:51,000
即通过GameObject.Find函数来定位场景中的物体

53
00:04:51,000 --> 00:04:55,000
通过Find函数我们可以根据物体的名称

54
00:04:55,000 --> 00:05:00,000
或路径来查找定位场景中的物体

55
00:05:00,000 --> 00:05:10,000
例如我们在Cube物体的脚本中重新定义target变量的访问方式

56
00:05:10,000 --> 00:05:16,000
也就是使用Find函数来访问球体对象

57
00:05:16,000 --> 00:05:24,000
此时可以重新定义target的类型为GameObject

58
00:05:24,000 --> 00:05:30,000
然后在Start函数中通过Find函数

59
00:05:30,000 --> 00:05:33,000
通过物体的名称来访问物体

60
00:05:33,000 --> 00:05:58,000
target=GameObject.Find("Sphere");

61
00:05:58,000 --> 00:06:03,000
保存脚本然后切换回unity

62
00:06:03,000 --> 00:06:10,000
可以看到target变量类型已经变为GameObject

63
00:06:10,000 --> 00:06:16,000
播放场景可以看到球体颜色变为红色

64
00:06:16,000 --> 00:06:23,000
说明在Cube物体中成功地使用Find函数找到了球体对象

65
00:06:23,000 --> 00:06:31,000
除此之外在Find函数中还可以通过层次路径来查找物体

66
00:06:31,000 --> 00:06:38,000
例如使Sphere成为主摄像机的子物体

67
00:06:38,000 --> 00:06:53,000
脚本中即改为"/Main Camera/Sphere"这种层次路径

68
00:06:53,000 --> 00:07:00,000
重新保存脚本切换到unity中

69
00:07:00,000 --> 00:07:08,000
再次执行 可以看到仍然可以成功定位到球体对象

70
00:07:08,000 --> 00:07:17,000
使用Find函数时尽量将其放在Start函数中

71
00:07:17,000 --> 00:07:21,000
来避免在每一帧中都执行Find操作

72
00:07:21,000 --> 00:07:26,000
这样可以提高程序的运行效率

73
00:07:26,000 --> 00:07:32,000
接下来看一下第三种定位物体的方式

74
00:07:32,000 --> 00:07:34,000
即通过标签的方式

75
00:07:34,000 --> 00:07:38,000
在unity中可以为物体添加一个标签

76
00:07:38,000 --> 00:07:43,000
就相当于为物体添加一个别名一样

77
00:07:43,000 --> 00:07:48,000
这样可以快速定位物体或快速分类物体

78
00:07:48,000 --> 00:07:54,000
要想为物体添加标签 先选中物体

79
00:07:54,000 --> 00:08:01,000
然后在属性编辑器中使用标签菜单来为其添加标签

80
00:08:01,000 --> 00:08:07,000
在标签菜单中含有一些预定义的标签

81
00:08:07,000 --> 00:08:14,000
如Respawn Finish EditorOnly MainCamera Player GameController

82
00:08:14,000 --> 00:08:21,000
可以为此物体选择其中一个预定义标签

83
00:08:21,000 --> 00:08:26,000
在选择后该物体就具有了相应的标签

84
00:08:26,000 --> 00:08:33,000
但也可以为物体添加自定义的标签

85
00:08:33,000 --> 00:08:38,000
此时选择Add Tag选项

86
00:08:38,000 --> 00:08:42,000
在标签管理器中可以创建新的标签

87
00:08:42,000 --> 00:08:45,000
扩展Tags

88
00:08:45,000 --> 00:08:55,000
可以在Element 0中输入新的标签 SphereTag

89
00:08:55,000 --> 00:09:04,000
在输入新的标签后其Size会自动增加

90
00:09:04,000 --> 00:09:08,000
回到属性编辑器中

91
00:09:08,000 --> 00:09:14,000
可以看到新添加的标签已经显示在标签菜单中

92
00:09:14,000 --> 00:09:23,000
此时可以为球体物体应用此新的标签

93
00:09:23,000 --> 00:09:27,000
这样球体物体就具有了SphereTag标签

94
00:09:27,000 --> 00:09:33,000
这时在Cube物体的脚本中

95
00:09:33,000 --> 00:09:38,000
我们可以重新定义球体对象的访问方式

96
00:09:38,000 --> 00:09:46,000
即使用FindGameObjectWithTag函数

97
00:09:46,000 --> 00:09:56,000
在其中使用新添加的SphereTag

98
00:09:56,000 --> 00:10:06,000
保存脚本回到unity中

99
00:10:06,000 --> 00:10:12,000
运行场景可以看到球体变为红色

100
00:10:12,000 --> 00:10:17,000
说明在Cube物体中成功地定位到了球体对象

101
00:10:17,000 --> 00:10:22,000
在使用标签方式时还可以使用函数的另一个方式

102
00:10:22,000 --> 00:10:30,000
FindGameObjectsWithTag 此函数返回的是GameObject数组

103
00:10:30,000 --> 00:10:36,000
在数组中包含有所有使用此标签的GameObject

104
00:10:36,000 --> 00:10:43,000
此时可以使用循环语句对数组中的对象进行处理

105
00:10:43,000 --> 00:10:47,000
在本节中主要介绍了物体的访问方式

106
00:10:47,000 --> 00:10:53,000
在下一节中我们看一下unity中对时间的控制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值