unity3d圣典脚本基础学习C#版本
unity3d圣典脚本基础学习C#版本
- 基础内容
- 常用操作
- Vector3 向量
- 全局变量
- 获取对象
- 实例化
基础内容
- 所有脚本都继承自MonoBehaviour类;
- 默认使用Start函数进行初始化,该函数仅执行一次。也可以使用Awake函数 进行初始化,不同之处在于 ,Awake在加载场景时运行,Start在 第一次调用Update或者FixedUpdate函数之前被调用,Awake运行在 Start函数之前。
- 目前Unity暂不支持命名空间.或许未来版本会有.
- C#中协同程序有不同的句法规则,Coroutines必须是IEnumerator返回类型,并且yield用yield return替代.
using System.Collections;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour {// C# coroutine // C# 协同程序IEnumerator SomeCoroutine () {// Wait for one frame // 等一帧yield return 0;// Wait for two seconds // 等两秒yield return new WaitForSeconds (2);}
}
常用操作
对物体的移动以及旋转通过Transfrom操作。
- 物体在Y轴上旋转5度。
public Transform transform;
void Update()
{//旋转操作transform.Rotate(0,5,0);//移动操作transform.Translate(0,0,2);
}
Vector3 向量
- 新建一个向量(1,1,1)
public Vector3 aposition = new Vector3(1,1,1);
- 向量的点乘,一个向量在另一向量方向上的投影,一个数值
public Vector3 a = new Vector3(1,1,1);
public Vector3 b = new Vector3(1,0,1);
float result = Vector3.Dot(a,b);
- 向量的叉乘,得到一个垂直于两向量平面的新的向量
float result = Vector3.Cross(a,b);
- 两个向量夹角,范围[0,180]
float angle = Vector3.Angle(a,b);
- 两个向量距离
float dis = Vector3.Distance(a,b);
- 规范化单位向量不改变原向量
float dis = Vector3.Distance(a.normalized,b.normalized);
全局变量
用static关键字创建全局变量,这是创建了一个名为someGlobal的全局变量.
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {public static int someGlobal = 5;public void Awake() {print(typeof(someGlobal));typeof(someGlobal) = 1;}
}
从另一个脚本访问它,你需要用”脚本名加一个小圆点再加上全局变量名”.
print(TheScriptName.someGlobal);
TheScriptName.someGlobal = 10;
获取对象
- 通过对象名(字符串Cube)获取单个游戏对象
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {public GameObject obj;void Start() {obj =GameObject.Find("Cube");}void Update(){if(obj != null){obj.transform.Rotate(0, Time.deltaTime * 200, 0);}}
}
- 通过标签获取多个/单个游戏对象
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {public GameObject[] obj;void Start() {Myobjs = GameObject.FindGameObjectsWithTag("Cube");}void Update(){if(Myobjs != null){foreach(GameObject obj in Myobjs){Debug.log("以"+obj.tag+"标签为游戏对象的名称"+obj.name);}}
}
实例化
- 一般创建克隆原始物体,多为预制体perfabs
- 克隆原始物体,位置设置在position,设置旋转在rotation,返回的是克隆后的物体。这实际上在Unity和使用复制(ctrl+D)命令是一样的,并移动到指定的位置。如果一个游戏物体,组件或脚本实例被传入,实例将克隆整个游戏物体层次,以及所有子对象也会被克隆。所有游戏物体被激活。
public Transform prefab;
void Start()
{int i = 0;while(i < 10){Instantiate(prefab,new Vector3(i*2.0f,0,0),Quaternion.identity);i++;}
}
- 实例化更多通常用于实例投射物(如子弹、榴弹、破片、飞行的铁球等),AI敌人,粒子爆炸或破坏物体的替代品。
public Rigidbody obj;
void Update()
{Rigidbody clone;clone = Instantiate(obj,transform.position,transform.rotation);
}
unity3d圣典脚本基础学习C#版本相关推荐
- Linux shell脚本基础学习
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- Shell 脚本基础学习 (四)
现在我们来讨论编写一个脚本的一般步骤.任何优秀的脚本都应该具有帮助和输入参数.并且写一个伪脚本(framework.sh),该脚本包含了大多数脚本都需要的框架结构,是一个非常不错的主意.这时候,在写一 ...
- Linux shell脚本基础学习详细介绍(完整版)一
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- Linux shell脚本基础学习详细介绍(完整版)2
详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...
- Linux shell脚本基础学习详细介绍(完整版)
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- 详细介绍Linux shell脚本基础学习(一)
2019独角兽企业重金招聘Python工程师标准>>> Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础 ...
- Shell 脚本基础学习
Shell 脚本(shell script),是一种为 shell 编写的脚本程序.Shell 编程跟 JavaScript.php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解 ...
- 【GIS人必学】零基础学习ArcGIS Python脚本开发训练营来了
Python作为一种高级程序设计语言,凭借其简洁.易读及可扩展性日渐成为程序设计领域备受推崇的语言.ArcGIS软件由于其面向地理问题的科学理念,不断创新的技术方法,已在国内外市场占据了主导地位.Py ...
- Android编译及编译脚本、Android构建基础学习笔记
Android编译及编译脚本.Android构建基础学习笔记 Android编译及编译脚本 概述 Android.mk转换成Android.bp 例子(简单Android.mk文件转Android.b ...
- 详细介绍Linux shell脚本系列基础学习(列表)
本系列适合Linux初学者,属于Linux入门级教程,主要介绍了Shell的分类.语法格式以及脚本的使用和编写格式等. 不断更新中,是Shell学习的必读经典教程.现主要包含以下文章: Linux S ...
最新文章
- 一张图搞定iOS学习路线
- Mac 添加ll命令
- PM们,请避免对产品的过度解读!
- Mybatis映射文件动态SQL语句-02
- 逝者如斯,且听我胡说八道
- 设计java application程序_下面哪些步骤是Java Application程序的建立及运行的步骤( )...
- linux kears 切换后端,如何更改Keras后端(哪里是json文件)?
- #pragma pack(1) 的意义是什么
- HTML5实现涂鸦板
- windows 子系统认识(1)
- 卸载mysql服务命令_完全卸载MySQL服务的方法
- ps2020 快捷键命令简介
- 宝塔面板+PM2布署nodejs
- 三角函数到傅立叶级数
- vbox虚拟机无法使用计算机名称,Vbox虚拟机 所选虚拟电脑不能正常访问
- Vue中 directive 用法
- Node的文件系统及Buffer概述
- 大数据 搜索 ES 一
- 【马仔创业记】一只猴子的创业独白(5)心理咨询行业痛点分析
- 360电视盒子项目暂时搁浅
热门文章
- QQ 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件...
- 短视频解析易语言代码
- Python+大数据技术框架和数仓基础(一)
- NYOJ 部分和问题
- java拦截器与AOP的区分理解
- 不确定度用计算机怎么算,算A类不确定度用计算器该怎样按
- 基于RV1126平台imx291分析 --- 回顾之前的注册
- 2022爱分析· 汽车行业数字化厂商全景报告
- 初级程序员如何写项目周报和月报
- Python学习笔记(6) xml转换为excel