您的位置:首页 > 产品设计 > UI/UE

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类方法和变量

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: