【Unity3D】同场景物体传值与Vector
来源:互联网 发布:汽油添加剂品牌 知乎 编辑:程序博客网 时间:2024/04/29 13:21
虽然之前做了一大堆Unity3D,但对于Unity3D各个脚本中的变量操控与使用还不够灵活,至少做了这么多唯一和旋转,对于Vector还懵懵懂懂的。其实在Unity3D各个变量在同场景拿个值非常随意,连公共类都不用自己写了,直接用鼠标轻轻一点就行,下面举个例子说明这两个基础问题,打牢基础,对以后做游戏大有裨益。
在场景中,如下图,布置一个球,和一个空物体GameObject。
如果要让球上升3个位置很简单,在这球挂的脚本,就一句transform.Translate(Vector3.up*3);完事。
但现在我要在GameObject中让这个球上升3个位置的同时,将挂在这个球一个简单得不能再简单,无脑得不能再无脑的脚本中的sphere_name这个值读出来。
using UnityEngine;using System.Collections;public class Sphere_Script : MonoBehaviour{ public string sphere_name = "aaa";}
那么GameObject的剧本该怎么写呢?具体如下:
using UnityEngine;using System.Collections;public class Script : MonoBehaviour{ public GameObject A; void Start() { //A = GameObject.Find("Sphere");//由于在编辑器界面中指明了A是什么,这句可以省略 A.transform.Translate(0, 3, 0);//前面没有A.指的是当前被挂脚本的物体,有A.就是对A操作 //A.transform.Translate(Vector3.up * 3);//(0, 3, 0)与(Vector3.up * 3)是等同的 Sphere_Script script = A.GetComponent<Sphere_Script>(); Debug.Log(script.sphere_name); }}
在“Vector3.方向”的时候,例如这里方向是up,Vector3是指大小无限接近于0的三维单位方向向量。Vector2则同理指大小无限接近于0的二维单位方向向量。
而在Vector作为一个类,定义一个对象的时候,例如Vector2/3 a=XX,尤其在Vector3 a=xx.position的时候更不容易读出来Vector到底是甚。他就是指一个向量。因为在笛卡尔立体坐标,向量是指改点对原点(0,0,0)的各个方向距离描述,因此大多数情况,一个向量指代的就是改点的坐标(x,y,z),少数情况,如给物体加个速度、加个力,就是指代一个方向了。这里一点都不抽象,稍有高中数学基础的人,都能自己领悟。因此,为何上面的代码0, 3, 0)与(Vector3.up * 3)是等同的。
至于取A脚本中的变量。因为Unity3D中,脚本一旦赋予给物体之后,这个脚本就会被认为是这个物体的其中一个组件,所以只要用GetComponent先取A中的组件,然后取组件中的脚本,赋予给相应的类,一般就是脚本的名称,这里是Sphere_Script,然后直接用对象名.变量名,就能轻松访问了,当然这个变量在这个对象里面本身要是public而不是private才行!
弄好之后将这个Script赋予给空物体GameObject,然后如下图,你会发现在GameObject多了脚本这一栏是当然了,关键是脚本这一烂,多了我们刚刚自定义的public GameObject变量A,问我们这个A是什么,我们点选旁边的⊙选定这个球就完事了。这就不用GameObject.Find("某某"),我还要好好将你这个某某的名字输入一遍,你烦不烦?
具体运行效果如下,可以看到,就是我们想要的效果:
- 【Unity3D】同场景物体传值与Vector
- Unity3d 场景中物体渐隐效果实现
- Unity3D场景搭建1:游戏物体
- Unity3D 一键更换场景物体
- Unity3D-切换场景,物体变暗解决方法
- [Unity3D]场景间切换与数据传递(以及物体删除技巧)
- 【转载】[Unity3D]场景间切换与数据传递(以及物体删除技巧)
- [Unity3D]场景间切换与数据传递(以及物体删除技巧)
- [Unity3D]场景间切换与数据传递(以及物体删除技巧)
- [Unity3D]场景间切换与数据传递(以及物体删除技巧)
- [Unity3D]场景间切换与数据传递(以及物体删除技巧)
- [Unity3D]场景间切换与数据传递(以及物体删除技巧)
- [Unity3D]场景间切换与数据传递(以及物体删除技巧)
- Unity3D学习记录——对同标签物体操作
- unity3d 随机函数 场景中物体移动和旋转
- unity3d 切换场景不销毁对象池中的物体方案
- 【Unity3d开发基础】场景中物体的变换
- unity3d点击屏幕判断是否击中场景中物体
- Sqlite3常用的插入方法及性能测试
- Action类
- 【个人手稿】 IIS7远程发布配置
- 财务会计基础(二)复式记账法
- 改变Android状态栏字体为黑色
- 【Unity3D】同场景物体传值与Vector
- JUC (Java Util Concurrency) 基础内容概述
- 蓝桥杯:报时助手
- 杭电ACM2016:数据交换输出
- JFFS2文件系统的移植
- C#实现rabbitmq 延迟队列功能
- Leetcode 206 Reverse Linked List(C++/python)
- 【oracle】一个空字符串:''引发的”命案“
- Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解