
1
Unity脚本中有很多方法访问到其他游戏对象或游戏组件,比如通过属性查看器指定参数的方法获取游戏对象,也可以通过 Find() 方法来获取游戏对象。
2
通过属性查看器指定参数 代码中声明public类型的游戏对象引用,在属性查看器中就会显示这个游戏对象参数,然后就可以将需要获取的游戏对象拖拽到属性查看器的相关参数位置。具体 *** 作时可以参考如下的C#代码,代码获取游戏对象上的 “Test” 脚本组件,然后执行doSomething方法。 using UnityEngine; using SystemCollections; public class NewBehaviourScript : MonoBehaviour { public GameObject otherObject; void Update() { Test te
查看collider的相关文档>
对于静态Script(可以不继承MonoBehiviour)
直接用 脚本名函数名(参数); 调用即可
对于组件
如果是静态成员,同上
如果是动态成员,可以用GetComponent<脚本名称>()来获取此脚本的类
也就是使用 GetComponent<脚本名称>()函数名(参数);调用
注意:上述其实省略了一个this对象,表示本身,意思是说你用
GetComponent<脚本名称>() 获取的对象是此脚本所挂载的对象上的此C#脚本对象
如果你要调用其他物体的脚本的成员,请使用ObjGetComponent<脚本名称>()函数名(参数);这里Obj指的是其他物体的GameObject对象
1新建两个C#脚本
2在test1脚本中定义一个整型变量speed并赋值60,在开始函数中输出结果
3在test2中定义共有类变量t1,test1类成员t1speed赋值10并输出结果
4将脚本拖拽到场景中的物体上,其中,T1一栏需要拖拽物体上的test1脚本
5观察控制台输出结果(先60,后10)
Unity3d中要对对象进行 *** 作必须首先去获取得到场景中的对象,那么弄清除获取对象的小细节就能够事半功倍
工具/原料
Unity3d和其内置的编译器
方法/步骤
在层级面板中选择多个对象相同的部分在监听器面板中给显示出来并且批量 *** 作
在Untiy3d的层级面板中创建多个对象并有复杂的父子级关系
在EmptyObject上挂载的C#脚本来通过GameObject的(静态的方法)Find()的对象名称获取G1对象,通过获取G1对象的直接父节点对象打印输出信息
分别通过EmptyObject挂载C#和Cube没有挂载C# 的GameObject 静态方法find()的元素目录(精确指定对象)获取一个指定的对象,获取的对象分为隐藏和显示两种情况
在EmptyObject上挂载的C#脚本通过transform(公共的方法)find()的对象的名称获分别获取G1,G5和G6。结果只能够获取挂载C#的对象的直接子节点对象
分别通过EmptyObject挂载C#和Cube没有挂载C# 的transform公共方法find()的元素目录(精确指定对象)获取一个指定的对象,获取的对象分为隐藏和显示两种情况
7
总结:通过GameObject的静态的find(),对象的名称去查找一个对象从整个层级面板中去匹配一个对象忽略掉目录结构的多少和是否对象挂载了该 *** 作的C#脚本,但最后获取的对象可能并不是我们想要的,如果查找的对象被隐藏则找不到通过名称所匹配的对象;通过GameObject的静态的find()对象的目录基本去定位获取对象时一种精确匹配且是不管该匹配的对象是否被隐藏。--------------通过transform的公共find()方法且是对象的名称来匹配的只能够所编译的C#一定是挂载到被查找的对象上面且是找其直接子节点对象(非多级子对象),目录查找就忽略掉了多级别的子节点对象。
js调用js直接脚本名。
分四种情况:js调用js直接脚本名,变量名,C#调用C#声明staticpublic变量名,然后脚本名,变量名调用,js调用C#,var,c等于gameObjectGetComponent脚本名,脚本名,变量名调用,C#调用js,脚本名c等于脚本名gameObjectGetComponent脚本名,变量名调用。
脚本是一种纯文本保存的程序,是批处理文件的延伸,一个脚本通常是解释运行而非编译。为缩短传统的“编写、编译、链接、运行”过程而创建的计算机编程语言是脚本语言。
不太清楚实际情况,但是,
(1)你这样写的前提是,A 和 B 必须同时实例化到同一个gameObject上(这两个脚本得同时应用到一个物体上),否则你的a = GetComponent<A>()肯定为null ,因为B调用这个Get,而他本身所处的gameObject本没有A这个脚本组件,A的实例在另一个物体上。 估计这是你报错的一个原因。
(2)用static声明全局变量似乎没必要,static的作用应该是让变量在类被实例之前就得到实例化。用static的话,那么应该是要达到这样的目的,即用类名直接调用变量或函数(Mathf类里面的很多数学数值和函数都是这样的例子),你这个情况如果用了static那就最好应该为了这样的目的:
ARoadnodecount
(3)实时 *** 作数组,最好用List<>,具体可以参考msdn List的用法,
(4)如果你的目的只是为了让B能够通过代码访问A的变量,一般的public 变量就足够,其余你只需要解决B通过何种途径正确访问A。比如,你可以把A做成singleton:
static A instance;
以上就是关于unity怎么打开别人的游戏全部的内容,包括:unity怎么打开别人的游戏、unity3d碰撞发生时如何在一个脚本中得到碰撞和被碰撞对象、在unity3D: c# 怎样调用另外一个c#脚本里面东西等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)