• 推箱子_1


    1. 单例模式

      私有静态该类型变量,get,set函数(ctrl+r+e),Awake 函数里赋值。

     1 public class Config : MonoBehaviour {
     2     // 单例
     3     private static Config instance;                  
     4 
     5     public static Config Instance
     6     {
     7         get { return Config.instance; }
     8         set { Config.instance = value; }
     9     }
    10 
    11     void Awake()
    12     {
    13         Instance = this;
    14     }
    15 }

    2. 下拉框的使用(DropDown)

      下拉框增加选项:

    1 chooseLevelDropdown = chooseLevelGo.GetComponent<Dropdown>();       // 得到下拉框组件
    2 List<string> levelsList = new List<string>();                       // 选项存在 List 里面
    3 for (int i = 1; i <= 100; ++i)
    4 {
    5     levelsList.Add(i + "");
    6 }
    7 chooseLevelDropdown.ClearOptions();                                 // 清空选项
    8 chooseLevelDropdown.AddOptions(levelsList);                         // 添加选项

      获取已选择的选项的位置(第一个为 0):

    chooseLevelDropdown.value

    3. 选择关卡

      根据下拉框选择值选择关卡:

    1 // 选择关卡确定按钮
    2 public void OnChooseLevelOkBtnClick()
    3 {
    4     chooseLevelGo.SetActive(false);             // 隐藏选择关卡界面
    5     // 保存输入的选择关卡数据
    6     PlayerPrefs.SetInt("currentLevel", chooseLevelDropdown.value);
    7     SceneManager.LoadScene(1);                  // 加载游戏场景
    8 }
    curLevel = PlayerPrefs.GetInt("currentLevel");                  // 获取选择的关卡

     

    4. 退出游戏

      要考虑编辑器情况:

    1     // 退出游戏按钮
    2     public void OnCancelBtnClick()
    3     {
    4 #if UNITY_EDITOR
    5         UnityEditor.EditorApplication.isPlaying = false;
    6 #else
    7     Application.Quit();      
    8 #endif
    9     }

    5. 创建实体并将该实体放在当前组件下

    1 // 创建实体,并将实体放在当前组件下
    2 private GameObject CreateItem(GameObject createCameObject, Vector3 createPosition, Quaternion createRotation)
    3 {
    4     GameObject itemGo = Instantiate(createCameObject, createPosition, createRotation);  // 创建实体
    5     itemGo.transform.SetParent(gameObject.transform);                                   // 放在该目录下
    6     return itemGo;
    7 }

    7. 初始化地图

      根据地图数组生成地图,并保存相应数据

     1 // 初始化地图模型
     2 private void InitMap()
     3 {
     4     curStep = 0;            // 初始化当前步数为 0
     5     curLevel = PlayerPrefs.GetInt("currentLevel");                  // 获取选择的关卡
     6     string[] level = Config.Instance.levels[curLevel].Split(",".ToCharArray());         // 加载当前关卡数据
     7     for (int i = 0; i < level.Length; ++i)
     8     {
     9         string tmp = level[i];                                                          // 第i行数据
    10         for (int j = 0; j < tmp.Length; ++j)                                            // 创建每一个方块
    11         {
    12             Vector3 pos = transform.position + new Vector3(1.23f * j, -1.23f * i, 0);
    13             brickDatas[j, i] = int.Parse(tmp[j].ToString());
    14             if (brickDatas[j, i] >= 6)
    15             {
    16                 currentPoint = new Vector2();           // 保存当前玩家位置
    17                 currentPoint.y = i;
    18                 currentPoint.x = j;
    19             }
    20             else if (brickDatas[j, i] == 3)             // 记录空坑数量
    21             {
    22                 numOfEmptyBrick++;
    23             }
    24             // 实例化
    25             GameObject itemGo = CreateItem(brickPrefab, pos, Quaternion.identity);
    26             brickRenderers[j, i] = itemGo.GetComponent<SpriteRenderer>();           // 获取渲染组件
    27         }
    28     }
    29 }

    8. 改变 SpriteRenderer 组件显示图片

      修改 sprite 属性即可。

    9. 字符串格式化输出

    curStepText.text = string.Format("{0:000}", curStep);

    10. 射线检测

    1 public static int RaycastNonAlloc(Vector3 origin, Vector3 direction, RaycastHit[] results, float maxDistance = Mathf.Infinity, int layermask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

  • 相关阅读:
    python note 19 异常处理
    python note 18 序列化模块
    python note 17 random、time、sys、os模块
    python note 16 re模块的使用
    python note 15 正则表达式
    python note 13 内置函数
    python note 12 生成器、推导式
    C++ int型负数除法取余问题
    Leetcode162. 寻找峰值
    Leetcode450. 删除二叉搜索树中的节点
  • 原文地址:https://www.cnblogs.com/coderJiebao/p/unity3d09.html
Copyright © 2020-2023  润新知