本文参考:2-2. Get and Setup Assets_哔哩哔哩_bilibili
1、下载资源
在Asset Store中下载Pix Adventure1 +2的资源:
在import的时候,不用到Scene import进来,如下图所示,Scenes目录反勾选一下。
两个资源都下载完成后,则下图所示:
在Assets下创建目录名为Graphiics,然后把Pixel Adventure1和Pixel Adventure2下Assets中的内容全部都copy到Graphics目录下,如下图所示:
2、Unity使用基础说明
(1)CSharp知识
1)virtual和abstract的区别
abstract方法只能声明在抽象类中,同时不能有方法体,必须被子类重写
virtual方法可以声明在任何非密封类中,它可以有方法体,可以被子类选择性重写
2)使用父类的方法
base.func()
(2)Collider
我们经常使用的Collider是Box Collider,这个是矩形的碰撞体。实际上还有Circle Collider。这样,针对不同的物体形状,我们可以选择不同的Collider。
(3)Debug模式
在Normal模式下,我们看到的是对象所有组件的Inspector信息,如下:
在Debug模式下,我们可以看到组件中各个变量的详细信息,所以debug时该模式非常有用。
(4)SerializeField字段
在C#脚本中
如果我们希望公开某个变量,那么可以使用public进行标识
如果我们不希望公开某个变量,那么可以使用private进行标识
如果我们不希望公开某个变量,但是在Inspector中又可以看到该变量的值,那么可以使用private进行标识,同时加上[SerializeField]的标识,示例如下:
[SerializeField] private float speed;
(5)Header字段
用于标记下方在Inspector中显示字段的header名称,效果如下:
(6)ContextMenu字段
创建类的选项,本身继承自MonoBehaviour。
比如在脚本中创建ContextMenu信息如下:
[ContextMenu("Debug here")]
private void print()
{
Debug.Log("here!");
}
此时当脚本挂载到某个对象后,右击该脚本,即可看到"Debug here"的选项,点击该选项即可执行对应的函数。
(7)Camera方式让Game视野变大
如果Game中物体过大,一种做法是分别缩小每个物体,如果物体特别多操作起来特别麻烦。另一种做法是,修改Camera的size大小,值越大视野也就越大。
(8)Flip左右翻转的方法
transform.Rotate(0, 180, 0);
通过rb.velocity.x判断朝向,如果该值小于0则朝左,否则朝右。
完整方法:
(9)例程(类似进程)
启动例程:StartCoroutine(func()), func的返回值为IEnumerator类型。
使用例程的好处:单独开进程,不会阻塞当前主进程。
比如例程中含有sleep时间,主线程就不用卡在那里了。
等待时间的写法:yield return new WaitForSeconds(xx);
例程举例:
假如两个例程存在相互干扰,那么可以在例程开始时停止已有的所有例程,使用StopAllCoroutines()方法。
比如:
(10)物体移动的方式
方法1: transform.position = new Vector2(pos.x, pos.y);
方法2:transform.position = Vector2.MoveTowards(pos1, pos2, moveSpeed * Time.deltaTime);
(11)给物体施加力量rb.AddForce
方法1:AddForce(Vector3 force),使用Vector3类型参数,可以分别向刚体按Vector3对象指定x/y/z分量施加力。使用该方法会对刚体施加一个持续的力。rb.AddForce(new Vector3(10f, 0f, 0f));
方法2:AddForce(x, y, x)