Unity(2) 脚本简单操作
生命周期(按顺序排列)
Awake():脚本唤醒,系统执行的第一个方法,在脚本声明周期内只执行一次,初始化一般可以在这里
Start():Awake之后,Update之前,只执行一次,一般在awake中初始化比这里好,
Update():每帧调用一次,逻辑更新
LateUpdate():在Update之后调用,每帧调用一次,一般摄像机在这里更新
FixedUpdate():固定(时间)更新,Eidt->Project Settings->Time中设置更新频率,默认0.02s,一般用于刚体物理更新,不受帧时间影响
OnDestroy():脚本销毁时调用
OnGUI():绘制GUI,每帧调用
脚本操作对象
创建对象:
1 Hierarchy中创建对象,然后拖动到Scene中
2使用代码动态创建,销毁对象
- using UnityEngine;
- using System.Collections;
- public class TCScript : MonoBehaviour {
- GameObject objCube;
- void OnGUI(){
- if(GUILayout.Button("CreatButton",GUILayout.Height(50)))
- {
- //创建立方体对象 js实现
- objCube = GameObject.CreatePrimitive(PrimitiveType.Cube);
- //给立方体增加一组件(这里为刚体)
- objCube.AddComponent("Rigidbody");
- //设置对象名
- objCube.name = "Cube";
- //设置材质颜色
- objCube.renderer.material.color = Color.blue;
- //设置位置
- objCube.transform.position = new Vector3(0.0f,10.0f,0.0f);
- }
- if(GUILayout.Button("DestroyButton",GUILayout.Height(50)))
- {
- Destroy(objCube);//马上销毁对象
- }
- }
- }
然后把这个cs脚本拖到默认的摄像机上就可以(似乎随便绑到摄像机不太合理,暂时不管,以后研究ui都绑在哪,绑在某个物体上应该就更不合适了)
获取对象:
1通过对象名获取
获取上面创建的Cube的方法
- GameObject obja;
- void getObj()
- {
- obja = GameObject.Find("Cube");
- }
如果获取对象下的子对象用(重复命名问题如何解决?使用find只会找到第一个?)
- objb = GameObject.Find("Cube/Cube");
2通过标签获取(第一个使用这个标签的)对象
标签的设置:
Hierarchy中新建一个Cube,在Inspector中可以设置标签
使用Add Tag可以设置新标签
也可以在Edit->Project setting->Tag and Layers中查看标签
按标签获取对象
GameObject obj = GameObject.FindWithTag("TagName");
如果多个对象使用同一标签,那么上面方法获取的是第一个设置为TagName的对象
3通过标签获取同一标签的多个对象的数组
GameObject obj = GameObject.FindGameObjectsWithTag("TagName");
绑定对象:
1拖动实现
把Project中的脚本文件直接拖给Hier archy里面的对象,在Inspector中可以查看对象绑定的脚本,并可对其执行删除等操作
2代码动态实现
- GameObject obj = GameObject.Find("Cube");
- obj.AddComponent("TCScript");//添加脚本
- Renderer render = obj.GetComponent("Renderer");//获取渲染器组件
对象克隆
操作对象旋转平移缩放
- objCube.transform.position = new Vector3(0.0f,10.0f,0.0f);//设置物体位置
- objCube.transform.position = Vector3(0.0f,10.0f,0.0f);//设置物体位置
- objCube.transform.Translate(Vector3.forward*Time.deltaTime*speed);//向(物体)前方平移
- objCube.transform.Rotate(Vector3.up*Time.deltaTime*speed);//沿y轴旋转
- objCube.transform.localScale = Vector3(0.0f,10.0f,0.0f)//沿y轴放大
脚本间通信
脚本与子对象,自身对象,父类对象的通信
不同类型脚本间相互调用(c#与js)
- CSTest csscript = obj.GetComponent<CSTest>;
- csscript.functionA();
js调用js脚本(JSTest.js)
- var jsscript: JSTest = obj.GetComponent("JSTest");
- jsscript.functionA();
c#调用js脚本(JSTest.js)
- JSTest jsscript = (JSTest)GetComponent("JSTest");
- jsscript.functionA();
js调用c#脚本(CSTest.cs)
- var csscript = this.GetComponent("CSTest");
- csscript.functionA();
Unity(2) 脚本简单操作的更多相关文章
- unity 编辑器扩展简单入门
unity 编辑器扩展简单入门 通过使用编辑器扩展,我们可以对一些机械的操作实现自动化,而不用使用额外的环境,将工具与开发环境融为一体:并且,编辑器扩展也提供GUI库,来实现可视化操作:编辑器扩展甚至 ...
- Unity Mono脚本 加密
加密环境 引擎版本:Unity3D 5.3.4 及更高版本 (使用Mono而并非IL2CPP) 操作系统:CentOS 6.2(Final) 加密环境:Android.IOS(暂定) 加密对象:C#源 ...
- Python零基础入门(安装步骤,验证方式, 简单操作)
本篇文章适合新人小白初步了解Python,涵盖Python的介绍.安装以及简单的基础操作. 1.Python简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.它的设 ...
- MySQL基本概念以及简单操作
一.MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MyS ...
- 游戏编程之Unity常用脚本类的继承关系
前言学习Unity开发引擎的初学者会接触大量的脚本类,而这些类之间的关系往往容易被忽略.本文对Unity引擎开发中的一些常用类及其关系进行了简单的归纳总结. 博文首发地址:http://tieba.b ...
- oracleLinux7上安装oracle11g r2(脚本简单配置环境)
一 环境脚本简单配置 #!/bin/bashmv /etc/yum.repos.d/* /tmpmv iso.repo /etc/yum.repos.d/tar zxvf a.tar.gzmv 7Se ...
- 进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用
进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数 ...
- Postgresql部署及简单操作
PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS),在开源数据库使用上与MySQL各领风骚.但也有不少人质疑postgresql的未来,正所谓,赞扬或批判一种数据库都必须先 ...
- x01.MagicCube: 简单操作
看最强大脑,发现魔方还是比较好玩的,便买了一个,对照七步还原法,居然也能成功还原. 为什么不写一个魔方程序呢?在网上找了找,略作修改,进行简单操作,还是不错的,其操作代码如下: protected o ...
随机推荐
- android检测当前网络是否可用
在android程序中运行第一步就是检测当前有无可用网络 如果没有网络可用就退出程序 if (isConnect(this)==false) { ...
- 【Web探索之旅】第三部分第一课:server
wx_fmt=jpeg" alt="0? wx_fmt=jpeg" style="height:auto"> 内容简单介绍 .第三部分第一课:s ...
- Sping中Bean配置的深入探讨
一.p命名空间的使用 Spring 从 2.5 版本开始引入了一个新的 p 命名空间,可以通过 <bean> 元素属性的方式配置 Bean 的属性.使用 p 命名空间后,基于 XML 的配 ...
- 九度OJ 1132:与7无关的数 (数字特性)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1619 解决:1037 题目描述: 一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7, 则称其为与7相关的数.现求所 ...
- Package template (html/template) ... Types HTML, JS, URL, and others from content.go can carry safe content that is exempted from escaping. ... (*Template) Funcs ..
https://godoc.org/text/template GoDoc Home About Go: text/templateIndex | Examples | Files | Directo ...
- 记一次FastJSON和Jackson解析json时遇到的中括号问题
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jadyer/article/details/24395015 完整版见https://jadyer. ...
- DIV+CSS常见问题的14条原因分析
当你在一个浏览器里面做好,在其他浏览器里面却完全不是那么回事情. 很多时候,我们就只是去修补下,或者利用各个浏览器对代码支持的不一致,进行针对各个浏览器进行不同的定义. 其实浏览器的不兼容,我们往 ...
- go 客户端服务端通信
client.go package main import ( "bufio" "encoding/json" "fmt" "ha ...
- bzoj4474: [Jsoi2015]isomorphism
树hash啊 我的做法很垃圾,就是yy一种只有一个孩子时hash值和孩子一样的hash法 然后用重心去作为根遍历 这样有点问题,就是重心假如也是要删掉的那就gg了 那我们求tot的时候删掉的点就不管直 ...
- Codeforces Round #304 (Div. 2) C. Soldier and Cards —— 模拟题,队列
题目链接:http://codeforces.com/problemset/problem/546/C 题解: 用两个队列模拟过程就可以了. 特殊的地方是:1.如果等大,那么两张牌都丢弃 : 2.如果 ...