Unity2D基础

施工中

如行走,跌倒等动画是绘图之后创建unity2d动画素材,导入后进行裁剪和选取动画导入的

给实体分组归类是好习惯,在Hierarchy建立一个新的empty game object:create object,然后将组件拖入即可

重力与碰撞

给物体添加重力组件:Add Component-Rigidbody 2D

但是拥有重力的物体会一直往下坠,所以我们要给地面和物体都添加一个碰撞(各种组件都需要碰撞体)

给物体添加Box碰撞组件:Add Component-Box Collider 2D,然后点击Edit Collider,拖动绿色长方形来选取碰撞体积。碰撞体有很多种类型,这里只是Box类型

速度

想给主角添加一个运动速度,通过脚本实现

创建脚本:Add Component-new script

右键edit script,打开IDE编写脚本(写C#我用的VS)

打开后会发现已经是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class aisaka : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{

}
}

其中void Update()方法是不停地执行的方法,Start()方法仅在实例化完成后调用一次

我们为其加入速度,写如下代码:

1
2


GetCompoment <T>()从当前游戏对象获取组件T(返回该组件),只在当前游戏对象中获取,没得到的就返回null,不会去子物体中去寻找。

GetCompomentInChildren<T>()先从本对象中找,有就返回,没就子物体中找,知道找完为止。

GetComponents<T>()获取本游戏对象的所有T组件,不会去子物体中找。

GetComponentsInChildren<T>()=GetComponentsInChildren<T>(true)取本游戏对象及子物体的所有组件

GetComponentsInChildren<T>(false)取本游戏对象及子物体的所有组件 除开非活跃的游戏对象,不是该组件是否活跃。

注意当前游戏对象指的是这个脚本的对象,比如这里就是获取该脚本对象(主角)的Rigidbody2D组件

如果IDE无法联想Unity组件和函数,有两种可能(可能都存在)

①需要在Unity中,Edit-Preferences-External Tools中在External Script Editor里选择对应的IDE

②VS报错OmniSharp failed 版本兼容问题

神奇的Unity使用心得

unity下载就个残废,那个hub这么烂还好意思摆出来,明明有本体直接下载放到一个巨巨巨巨巨小的地方非要宣传一个破烂hub;中国官网一万年备案中,国外官网打开就是一片空白,速度慢得堪比IE;程序退出经常未响应;老版本Unity就直接和VS新版本不兼容了;装了新版本之后竟然老版本清除不干净,快捷方式打不开新版;然后装了新版本老版本的project打不开了,提示我得同时存在老版本才能打开,然后又没法从程序里调用VS了。。。什么破软件我吃你萌,贵司程序员全体去吃屎!!!!