unity3D 鼠标键盘输入

一、鼠标键盘输入

游戏的输入可以来自于鼠标,键盘,触摸屏,游戏手柄

String message;
void Update(){
    var input = Input.mousePosition;
    message = input.ToString();
}
void OnGUI(){
    GUILayout.TextArea(message,200);
}

显示一个Vector3类型的xyz的鼠标位置。

Input.GetButtonDown(0):0代表鼠标左键,1代表鼠标右键,如果鼠标左键按下返回true。

Input.GetKeyDown("space"): 检测空格是否按下。

更多操作可以查看Unity Script API(UnityEngine.Input - Unity 脚本 API

InputManger 管理控制器

Editor->Project Setting->Input

二、组件的调用

组件Component代表一个功能

例如AudioSource代表音乐资源,可以播放音乐,音效。

Play on wake表示游戏开始自动播放。

在代码中也可以使用API来使其播放音乐。

1获取AudioSource组件

AudioSource audio = this.GetComponent<AudioSource>();

2播放

audio.Play();

其中<>表示泛型,即获取<AudioSource>类型的组件。

 鼠标点击播放或停止播放。

三、组件的参数

假设想要选用的组件不在当前物体下,在脚本中可以引用其他物体下的脚本

方法一:

public GameObject bgm;
void Start(){
    AudioSource audio = bgm.GetComponent<AudioSource>();
    audio.Play();
}

先获取想要引用的物体,再获取这个物体的组件。

方法二:

public AudioSource audio;

直接创建一个变量,然后在检查器中将想要获得的物体拖到audio中

四、脚本组件的引用

一个脚本中访问另一个脚本

和普通组件一样

1 API获取

FanLogic fan = node.getComponent<FanLogic>();

2 直接引用

public FanLogic fan;

public FanLogic fan;
void Update(){
    if(Input.GetMouseButtonDown()){
        FanLogic fanlogic = fan.GetComponent<FanLogic>();
        fanlogic.speed = 180;    
    }
}
public FanLogic fan;
void Update(){
    if(Input.GetMouseButtonDown()){
        
        fan.speed = 180;    
    }
}

五、消息调用

消息调用,SendMessage,以消息的形式来调用另一个组件

public GameObject obj;//找到目标节点

obj.SendMessage(函数名,value);

//Main Logic

public GameObject target;
void Update(){
    if(Input.GetMouseButtonDown(0)){
        target.SendMessage("doRotate");
    }
}
//FanLogic
public float speed;
void doRotate(){
    speed = 180;
    this.transform.Rotate(0,speed*Time.deltaTime,0,Space.Self)
}

猜你喜欢

转载自blog.csdn.net/helongss/article/details/129271595