uinty脚本c#(学习笔记)
2015-07-24 00:05
302 查看
一、 c#的基本语法
二、脚本的创建
1、通过assert->create ->c#方式创建
2、 在project下的create选择c#脚本
三、脚本常用的必然函数
update() ---每帧调用 --用于更新场景的状态(除了物理状态有关的更新)
start() ---update()第一次运行前调用的函数 --用于游戏对象的初始化(区别于c++的在构造函数中初始化对象。因为c##不确定构造函数的调用位置)
awake() ---脚本实例被调用的时候调用 --用于游戏对象的初始化(注:awake的执行早于所有脚本的start函数)
FixedUpdate() ----每个固定物理时间调用一次 ---用于物理状态的更新
LateUpdate() ---每一帧都调用(在update之后调用) --用于更新场景和状态,和相机有关的更新一般放在这
四、使用脚本
GameObj->CreateEmpty ,创建了一个空对象,该对象会出现在hierarchy视图中,在hieracrchy试图中选择该游戏对象,然后再爱inspector试图的对象属性列表下方一次点击按钮add component->script->example,将创建的c#脚本添加到游戏对象中。
作为一个组件,脚本本身是无法脱离游戏对象独立运行的,让必然添加到游戏对象上才会生效。
五 monobehaviour类
该类是unity中一非常重要的类,定了基本的脚本行为,所有的脚本类都需要从他直接或者间接地继承,脚本的必然事件就是从该类继承而来。除此之外,该类还有触摸,碰撞的相关函数,都是以On开头。
13.6.4访问组件
脚本可以访问游戏对象的各种组件并设置组件参数,只需要在脚本里直接访问组件对象的成员变量即可。
常见的组件以及对象的变量
组件引用函数比较耗时,已改尽量避免在update中调用,而是应该在初始化时保存在变量中。
13.6.5 访问游戏对象
脚本除了要范文脚本所在游戏对象的组件,还要经常访问和控制其他游戏对象。
方式:
1、通过名称来查找:使用函数GameObj.Find,如果场景总存在指定名称的游戏对象,那么返回该对象的引用,否则返回值null,如果存在多个重名对象,那么返回第一个对象的引用。
void ExampleFunction(){
GameObj monster = GameObject.Find("Monster");}
2、通过标签来查找:GameObj.FindWithTag,
void ExampleFunction(){
GameObj monster = GameObject.FindWithTag("Player");}
这两种访问对象方式也是比较耗时,所以也要放在初始化中。
3、在unity编辑器中通过申明访问权限为public对象然后将要访问的组件或者对象复制给该变量,就可以在脚本中通过变量来访问组件或者对象。
假设在场景中有Player、cube、sphere共3个游戏对象,player对象上已经添加了脚本Player.cs,现在需要在脚本中访问cube游戏对象,以及sphere对象的Transform组件:
首先,在Player.cs脚本中添加类型分别为GameObject 和Tramform的两个成员变量,访问权限设置为Public
代码如下:
using UnityEngine;
using System.Collections;
public class Player:MonoBehaviour{
public GameObject cube;
public Transform sphereTransform;
void Start(){}
void Update(){}
}
2、保存脚本,可看到Player脚本的视图会增加两项,正式刚才添加的两个成员变量,目前并没有对其赋值,均为null
3、用坐标左键在hierarchy试图中拖动Cube游戏对象到inspector试图的Cube参数上,然后同样操作Sphere,完成了对两个变量的赋值
13.7常用脚本Api
13.7.1 Transfrom组件
该组件决定了游戏对象的位置,方向和缩放比例。
13.7.2 Time类
13.7.3 Random类
用来生成随机数,随机点或旋转
13.7.4 Mathf类
13.7.5coroutine 协同程序
>协同程序就是可以和主程序并列云系甘,和多线程类似,但是在任一时刻只会有一个协同程序在运行,别的协同程序则会被挂起。
>协同程序可以用来实现让一段程序等待一段时候继续运行。
>c#中,协同函数的返回类型别学时为IEnumerator,yield 要用yield return来代替,并且启动协同程序用StartCoroutine函数
第14章 输入与控制
处理用户的输入是游戏交互的基础。处理输入的类Input。在编写处理输入的脚本是,需注意Unity所有输入信息的都是在Update方法中完成的,因此和输入处理相关的脚本都应该放在Update方法中。
14.1Input类方法和变量
二、脚本的创建
1、通过assert->create ->c#方式创建
2、 在project下的create选择c#脚本
三、脚本常用的必然函数
update() ---每帧调用 --用于更新场景的状态(除了物理状态有关的更新)
start() ---update()第一次运行前调用的函数 --用于游戏对象的初始化(区别于c++的在构造函数中初始化对象。因为c##不确定构造函数的调用位置)
awake() ---脚本实例被调用的时候调用 --用于游戏对象的初始化(注:awake的执行早于所有脚本的start函数)
FixedUpdate() ----每个固定物理时间调用一次 ---用于物理状态的更新
LateUpdate() ---每一帧都调用(在update之后调用) --用于更新场景和状态,和相机有关的更新一般放在这
四、使用脚本
GameObj->CreateEmpty ,创建了一个空对象,该对象会出现在hierarchy视图中,在hieracrchy试图中选择该游戏对象,然后再爱inspector试图的对象属性列表下方一次点击按钮add component->script->example,将创建的c#脚本添加到游戏对象中。
作为一个组件,脚本本身是无法脱离游戏对象独立运行的,让必然添加到游戏对象上才会生效。
五 monobehaviour类
该类是unity中一非常重要的类,定了基本的脚本行为,所有的脚本类都需要从他直接或者间接地继承,脚本的必然事件就是从该类继承而来。除此之外,该类还有触摸,碰撞的相关函数,都是以On开头。
13.6.4访问组件
脚本可以访问游戏对象的各种组件并设置组件参数,只需要在脚本里直接访问组件对象的成员变量即可。
常见的组件以及对象的变量
组件引用函数比较耗时,已改尽量避免在update中调用,而是应该在初始化时保存在变量中。
13.6.5 访问游戏对象
脚本除了要范文脚本所在游戏对象的组件,还要经常访问和控制其他游戏对象。
方式:
1、通过名称来查找:使用函数GameObj.Find,如果场景总存在指定名称的游戏对象,那么返回该对象的引用,否则返回值null,如果存在多个重名对象,那么返回第一个对象的引用。
void ExampleFunction(){
GameObj monster = GameObject.Find("Monster");}
2、通过标签来查找:GameObj.FindWithTag,
void ExampleFunction(){
GameObj monster = GameObject.FindWithTag("Player");}
这两种访问对象方式也是比较耗时,所以也要放在初始化中。
3、在unity编辑器中通过申明访问权限为public对象然后将要访问的组件或者对象复制给该变量,就可以在脚本中通过变量来访问组件或者对象。
假设在场景中有Player、cube、sphere共3个游戏对象,player对象上已经添加了脚本Player.cs,现在需要在脚本中访问cube游戏对象,以及sphere对象的Transform组件:
首先,在Player.cs脚本中添加类型分别为GameObject 和Tramform的两个成员变量,访问权限设置为Public
代码如下:
using UnityEngine;
using System.Collections;
public class Player:MonoBehaviour{
public GameObject cube;
public Transform sphereTransform;
void Start(){}
void Update(){}
}
2、保存脚本,可看到Player脚本的视图会增加两项,正式刚才添加的两个成员变量,目前并没有对其赋值,均为null
3、用坐标左键在hierarchy试图中拖动Cube游戏对象到inspector试图的Cube参数上,然后同样操作Sphere,完成了对两个变量的赋值
13.7常用脚本Api
13.7.1 Transfrom组件
该组件决定了游戏对象的位置,方向和缩放比例。
13.7.2 Time类
13.7.3 Random类
用来生成随机数,随机点或旋转
13.7.4 Mathf类
13.7.5coroutine 协同程序
>协同程序就是可以和主程序并列云系甘,和多线程类似,但是在任一时刻只会有一个协同程序在运行,别的协同程序则会被挂起。
>协同程序可以用来实现让一段程序等待一段时候继续运行。
>c#中,协同函数的返回类型别学时为IEnumerator,yield 要用yield return来代替,并且启动协同程序用StartCoroutine函数
第14章 输入与控制
处理用户的输入是游戏交互的基础。处理输入的类Input。在编写处理输入的脚本是,需注意Unity所有输入信息的都是在Update方法中完成的,因此和输入处理相关的脚本都应该放在Update方法中。
14.1Input类方法和变量
相关文章推荐
- 关于String和StringBuilder、StringBuffer的一个简单性能测试
- pt-query-digest查询日志分析工具
- druid连接池配置
- SequenceInputStream 输入流的串联
- hdu 1242 rescue
- 2015 Multi-University Training Contest 2 1002 Buildings
- java理论之java--GUI(图形用户管理)与 IO/流
- uva 10069 Distinct Subsequences 不同的序列
- arduino example------Core Functions 核心功能 (未翻译完)
- Fatal error: require() [function.require]: Failed opening required 'db.php'
- iOS开发——UI进阶篇(三)自定义不等高cell,如何拿到cell的行高,自动计算cell高度,(有配图,无配图)微博案例
- HDU 5301 Buildings(找规律)
- easyui datagrid 列拖拽2
- easyui datagrid 列拖拽
- iOS 在UILabel显示不同的字体和颜色
- HDU 5301 - Buildings(技巧)
- jquer 中常用改变display
- String/StringBuffer/StringBuilder区别
- 最后一场多校 hdu 5288 OO’s Sequence
- 提示:This Android SDK requires Android Developer Toolkit version 21.1.0 or above. Current version is