Unity游戏开发入门

如何让一个物体A在另一个物体B前?
把物体A加入到一个 sorting layer1,把物体B加入到sorting layer2,在sorting layer中把sorting layer1放在sorting layer2下面,A就会出现在B的前面了。
sorting layer中越在下面的layer会显示在更前面。

如何让两个碰撞体不碰撞?
把这两个碰撞体叫加到不同的layer,然后在 Edit --> Project Setting -->Physics 2D -->layer collision Matrix中把不需要碰撞的两个layer取消即可。
把这两个物体加入到两个不同的图层,设置两个图层不会相撞之后这两个图层上的物体就不会产生碰撞了。

C#如何获取随机数?
为了实现NPC随机触发对白,设置了一个简单的随机方法。
获取随机数可以用System命名空间下的类 Random ,Random是一个根据触发时间来产生随机数的类。Random还可以带参数实例化,可以自己设定触发种子。注意UnityEngine命名空间下也有一个Random类,这两个类不一样同时引用这两个命名空间需要指明该类来自哪个命名空间。

 private int GetRoundNum()
    {
        int x;
        Random random = new Random();
        x = random.Next(0, 6);
        return x;
    }

参考C#产生随机数之一 生成真随机数

Unity 2D GameManager

单例模式 单例对象的类只有一个对象,并提供让外部访问该类的功能。单例模式又分为懒汉式和饿汉式。懒汉式只有在使用到该类实例时才会实例化(线程不安全),饿汉式则在定义类时就已经实例化了。
可以使用单例模式设计GameManager。
创建一个GameManager类实现游戏数据的管理。GameManager接管了游戏从启动到关闭过程中的数据,包括场景中的物品数量,角色的血量等等。此外,游戏中进行的操作也通过GameManager管理实现,如角色死亡,收集物品。因为GameManager是全程跟随的,它可以实现数据在关卡之间的继承。

Unity 2D 如何实现玩家控制角色爬梯子功能。

可以为梯子添加一个碰撞体,并把碰撞体设为is Trigger (让此碰撞体成为一个开关)。当角色碰到梯子时,触发Trigger,让角色进入一个可爬梯子的状态(可用一个bool变量控制)在可爬梯子状态下且此时角色处于站立不动状态时(防止角色在跳跃或者跑动状态也能爬梯子)按下上下键可以转换到爬梯子状态,爬梯子状态下可以上下左右移动(左右移动会脱离梯子,此时会离开爬梯子状态),但不能进行跳跃下蹲等操作。注意Trigger只有在碰撞的一瞬间能触发,所以不要把收听指令(读取玩家操作)和判断角色状态(角色进入梯子范围这一时刻一般不处于站立不动状态)写OnTriggerEnter2D方法中,最好放在FixedUpdate函数中。

保存游戏数据

1.PlayerPrefs
PlayerPrefs是Unity3d提供了一个用于数据本地持久化保存与读取的类(保存的数据会存储下来,即使停止执行项目,数据仍然存在,下次运行依然可以加载这些数据。数据以key-value的形式将数据保存在本地,然后在代码中可以写入、读取、更新数据。
2.序列化与反序列化
序列化是把Unity中的对象转化为其他可以存储在本地的数据类型的过程,反序列化则是把这些本地存储的数据转化回Unity中的对象的过程。
序列化存储方式有三种,二进制存储,json和XML。
二进制序列化:定义一个保存类Save,把要存储的数据都在类中声明,在要保存时把数据先记录在Save类对象中,再把Save序列化为二进制数据写入文件中。加载时把文件中的数据反序列化到Save类对象中,再把Save对象中的数据加载到游戏中。二进制序列化保存下来的数据是一些二进制数据,不利于阅读,另外兼容性也不好。
Json序列化: Json序列化数据数据为key-value的形式,可读性更好;
XML序列化:

场景转换时角色的位置如何控制?

可以在另一个场景设置一个门,把门添加一个脚本,把门的位置信息传给角色,让角色出现在门的位置。这个方法不仅可以顺便实现角色进入下一关,也可以实现角色回到上一个关卡。

场景切换后如何做镜头跟踪?

两种方法
1.把角色的位置信息传给新场景中的摄像头,让摄像头的位置与角色同步,注意这两者要一直保持一致,所以更新函数要一直调用。
2.在新场景中设立一个角色替身,让新场景的摄像头跟踪替身,让替身跟踪角色。(因为一开始新场景没有角色这个对象,所以不能让摄像头跟踪角色)。

如何让一个Canvas显示在另一个Canvas前面?

在Canvas的Inspector窗口中把Canvas中的设置Sort Order,数值越大越显示在前面。

你可能感兴趣的:(游戏开发,unity,游戏)