unity3d圣典脚本基础学习C#版本

  • 基础内容
  • 常用操作
  • Vector3 向量
  • 全局变量
  • 获取对象
  • 实例化

基础内容

  1. 所有脚本都继承自MonoBehaviour类;
  2. 默认使用Start函数进行初始化,该函数仅执行一次。也可以使用Awake函数 进行初始化,不同之处在于 ,Awake在加载场景时运行,Start在 第一次调用Update或者FixedUpdate函数之前被调用,Awake运行在 Start函数之前。
  3. 目前Unity暂不支持命名空间.或许未来版本会有.
  4. 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#版本相关推荐

  1. Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  2. Shell 脚本基础学习 (四)

    现在我们来讨论编写一个脚本的一般步骤.任何优秀的脚本都应该具有帮助和输入参数.并且写一个伪脚本(framework.sh),该脚本包含了大多数脚本都需要的框架结构,是一个非常不错的主意.这时候,在写一 ...

  3. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  4. Linux shell脚本基础学习详细介绍(完整版)2

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  5. Linux shell脚本基础学习详细介绍(完整版)

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  6. 详细介绍Linux shell脚本基础学习(一)

    2019独角兽企业重金招聘Python工程师标准>>> Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础 ...

  7. Shell 脚本基础学习

    Shell 脚本(shell script),是一种为 shell 编写的脚本程序.Shell 编程跟 JavaScript.php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解 ...

  8. 【GIS人必学】零基础学习ArcGIS Python脚本开发训练营来了

    Python作为一种高级程序设计语言,凭借其简洁.易读及可扩展性日渐成为程序设计领域备受推崇的语言.ArcGIS软件由于其面向地理问题的科学理念,不断创新的技术方法,已在国内外市场占据了主导地位.Py ...

  9. Android编译及编译脚本、Android构建基础学习笔记

    Android编译及编译脚本.Android构建基础学习笔记 Android编译及编译脚本 概述 Android.mk转换成Android.bp 例子(简单Android.mk文件转Android.b ...

  10. 详细介绍Linux shell脚本系列基础学习(列表)

    本系列适合Linux初学者,属于Linux入门级教程,主要介绍了Shell的分类.语法格式以及脚本的使用和编写格式等. 不断更新中,是Shell学习的必读经典教程.现主要包含以下文章: Linux S ...

最新文章

  1. 一张图搞定iOS学习路线
  2. Mac 添加ll命令
  3. PM们,请避免对产品的过度解读!
  4. Mybatis映射文件动态SQL语句-02
  5. 逝者如斯,且听我胡说八道
  6. 设计java application程序_下面哪些步骤是Java Application程序的建立及运行的步骤( )...
  7. linux kears 切换后端,如何更改Keras后端(哪里是json文件)?
  8. #pragma pack(1) 的意义是什么
  9. HTML5实现涂鸦板
  10. windows 子系统认识(1)
  11. 卸载mysql服务命令_完全卸载MySQL服务的方法
  12. ps2020 快捷键命令简介
  13. 宝塔面板+PM2布署nodejs
  14. 三角函数到傅立叶级数
  15. vbox虚拟机无法使用计算机名称,Vbox虚拟机 所选虚拟电脑不能正常访问
  16. Vue中 directive 用法
  17. Node的文件系统及Buffer概述
  18. 大数据 搜索 ES 一
  19. 【马仔创业记】一只猴子的创业独白(5)心理咨询行业痛点分析
  20. 360电视盒子项目暂时搁浅

热门文章

  1. QQ 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件...
  2. 短视频解析易语言代码
  3. Python+大数据技术框架和数仓基础(一)
  4. NYOJ 部分和问题
  5. java拦截器与AOP的区分理解
  6. 不确定度用计算机怎么算,算A类不确定度用计算器该怎样按
  7. 基于RV1126平台imx291分析 --- 回顾之前的注册
  8. 2022爱分析· 汽车行业数字化厂商全景报告
  9. 初级程序员如何写项目周报和月报
  10. Python学习笔记(6) xml转换为excel