以下内容笔者个人翻译自:http://www.theknightsofunity.com/
Unity中那些你可以做的更好的事情!
紧接着第一部分,我们将再列举五个能帮助你提高Unity生产力的小Tips!
Unity项目设置向导
当你新建一个项目时,完成所有的初始化设置常常要花费至少半个小时。接下来列举能帮你节省时间的两种方法:
-
简易:创建一个拥有基本设置,文件夹结构以及版本控制忽略文件的项目模板。这是一种让你可以预放置一些内容的最有效方式。但这不是一种可高度自定义的方式,因此有可能你需要花费一些额外时间来完成配置。
-
进阶:创建一个模块,再根据你的需要设置整个项目。该模块包含尽可能多的你想要拥有的游戏/文件夹结构/架构或其他变体。在理想的情况下,拥有这些模块将会很棒,但它需要消耗一些时间来制作。
无论你选择哪一种,为你的项目搭建一个结实的基础都是非常有帮助的。😉
面板锁
【这一节比较基础,相信大家都已经会了,不做太多文字赘述了直接上图】
使用内置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即可。