【Unity】实用开发效率优化指南!(二)(个人翻译)

以下内容笔者个人翻译自:http://www.theknightsofunity.com/

Unity中那些你可以做的更好的事情!

紧接着第一部分,我们将再列举五个能帮助你提高Unity生产力的小Tips!

Unity项目设置向导

当你新建一个项目时,完成所有的初始化设置常常要花费至少半个小时。接下来列举能帮你节省时间的两种方法:

  1. 简易:创建一个拥有基本设置,文件夹结构以及版本控制忽略文件的项目模板。这是一种让你可以预放置一些内容的最有效方式。但这不是一种可高度自定义的方式,因此有可能你需要花费一些额外时间来完成配置。

  2. 进阶:创建一个模块,再根据你的需要设置整个项目。该模块包含尽可能多的你想要拥有的游戏/文件夹结构/架构或其他变体。在理想的情况下,拥有这些模块将会很棒,但它需要消耗一些时间来制作。

无论你选择哪一种,为你的项目搭建一个结实的基础都是非常有帮助的。😉

面板锁

【这一节比较基础,相信大家都已经会了,不做太多文字赘述了直接上图】

在这里插入图片描述

在这里插入图片描述

使用内置json工具

通常来说,当你使用JSONs时,你必须有一个JSON解析器。转换字符串为一个JSON对象时后,你必须将JSON中的所有值分配给所需要的对象,每次这么做都感到非常枯燥…

Unity内置的JsonUtility可以最大程度帮你解决这些问题:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class JsonSerializationExample : MonoBehaviour {

   void Start () {

       // Creating object that will be serialized
       ResearchObjectRoot array = new ResearchObjectRoot();
       array.researches = new List<ResearchData>() {
           new ResearchData() { researchName = "JSON", researchValue = 0},
           new ResearchData() { researchName = "Utility", researchValue = 4},
           new ResearchData() { researchName = "Serialization", researchValue = 8},
       };

       // Serialization
       string json = JsonUtility.ToJson(array);

       // Object created from serialized json
       ResearchObjectRoot newArray = JsonUtility.FromJson<ResearchObjectRoot>(json);
   
   }
}
[System.Serializable]
public class ResearchObjectRoot
{
    public string researcherName;
    public List<ResearchData> researches;
}
[System.Serializable]
public class ResearchData
{
   public string researchName;
   public int researchValue;
}

注意:JsonUitlity现在只能处理“结构化”的JSON,不能处理诸如像dictionaries的类型。假如这对你来说会造成困扰,你可能需要找到一个拥有完整特性的JSON库。

更多关于JsonUtility:https://docs.unity3d.com/Manual/JSONSerialization.html

一份脚本兼容所有平台

当你同时开发Android和iOS平台的游戏时。 你想实现一个排行榜功能。 你已经创建了一个按钮来显示排行榜,并为其指定方法OpenMainLeaderboard()。 但是如何在Android平台上运行GooglePlay服务,而在iOS平台上运行Game Center? 很简单!

在这里插入图片描述

using UnityEngine;

public class OpeningLeaderboards : MonoBehaviour {
   public void OpenMainLeaderboard()
   {
       #if UNITY_ANDROID
       // open google play games leaderboard
       #elif UNITY_IOS
       // open game center leaderboard
       #else
       Debug.Log("Opening main leaderboard view!");
       #endif
   }
}

更多请浏览:https://docs.unity3d.com/Manual/PlatformDependentCompilation.html

不要在重复导入项目上浪费时间

你是否对每次更改构建平台时都要等待资源导入而感到厌倦? 对我来说,这不仅无聊,而且浪费很多时间! 但是有一个强大的解决方案,没有人告诉过你!

在Unity中,有一个叫做“缓存服务器(Cache Server)”的东西。 可以将其配置为在本地计算机或专用服务器上工作。 此缓存服务器将保存你重新导入的资源,当你更改构建平台时,它将把重新导入的资源退返回给你,因此无需再次重新导入它们!唯一要做的就是转到Unity> Preferences> Cache Server,然后将Cache Server Mode更改为Local或Remote即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值