本文主要是介绍Unity3d 周分享(9期 2018.12.31),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
作为搞技术类博客的csdn居然能在点击发表文章 内容全部丢失,不是第一次遇到了 ,弄一个文章浪费多长时间。
-------------------------------------------------
选自过去1~2周的内容: https://twitter.com/unity3d 和各种其他来源吧
懒得重新弄了, 抱歉~
1)、 今天看到 文档中提到
If you enable Occlusion Culling it can significantly increase performance, but it occupies more disk space and RAM because the Unity Umbra integration bakes the occlusion data during the build and Unity needs to load it from disk to RAM while loading a Scene.
如果启用遮挡剔除,它可以显着提高性能,但它占用更多磁盘空间和RAM,因为Unity Umbra集成在构建期间烘焙遮挡数据,Unity需要在加载场景时将其从磁盘加载到RAM。
不仅仅静态、动态批处理有这个问题~~~
2)、 Unity摄像机的 Frustum Culling 视锥体剔除。
在Unity 2017.1 中做了优化, 只会剔除Camera关心的层, 这个也是首先进行的步骤。
其中还提供了 :Camera.layerCullDistances https://docs.unity3d.com/ScriptReference/Camera-layerCullDistances.html?_ga=2.247849863.1202346539.1545618055-1366382285.1535636176 针对指定层设置剔除距离~~
3) 您可以在更改脚本后进行编译, 而无需将焦点返回到Unity编辑器。 “UnityCompileInBackground ”
https://github.com/baba-s/unity-compile-in-background
例如,如果在Visual Studio中编辑并保存代码, 可以直接编译, 不用等回到Unity中。
4)、 UGUI 扩展 'Unity-SafeAreaCanvas',可以使用对应iPhone X / XS安全区域的画布
https://github.com/nkjzm/Unity-SafeAreaCanvas
另外一个比较有用的项目:
https://github.com/Syy9/GameViewSizeChanger
“GameViewSize Changer”,可以在游戏视图中查看iPhone X / XS的安全区域
5)、 Unity在导出 Android的Gradle项目时调用“IPostGenerateGradleAndroidProject” 回调
https://docs.unity3d.com/ScriptReference/Android.IPostGenerateGradleAndroidProject.html
using UnityEditor.Android; using UnityEngine; public class Example : IPostGenerateGradleAndroidProject { public int callbackOrder { get { return 0; } } public void OnPostGenerateGradleAndroidProject( string path ) { Debug.Log( path ); } }
在生成Gradle项目和构建开始之间的期间 触发回调
调用Internal 构建 方式 不会被调用
6)、 如何使Console 窗口中显示的“warning CS0649: Field is never assigned to”警告无效
using UnityEngine; public class Example : MonoBehaviour { [SerializeField] private GameObject m_gameObject; private void Awake() { Debug.Log( m_gameObject ); } }
Unity Console窗口中会显示警告,因为尚未初始化应用SerializeField属性的变量 。
因此,将名为“csc.rsp”的文件添加到Unity项目中 。 写上内容 -nowarn:0649
在“csc.rsp”文件中描述的状态下编译时,不会输出上述警告
由于可能无法输出重要警告,我认为使用时应注意
警告不仅仅在 Unity中, 那么在 Visual Studio 上:
using UnityEngine; public class Example : MonoBehaviour { [SerializeField] private int m_value; private void Start() { Debug.Log( m_value ); } }
上面显示警告。
因此,将此脚本添加到Unity项目的“Editor”文件夹中,
关闭Visual Studio并从Unity再次启动Visual Studio。
using SyntaxTree.VisualStudio.Unity.Bridge;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using UnityEditor;
[InitializeOnLoad]
public static class ProjectFileHook
{
static ProjectFileHook()
{
ProjectFilesGenerator.ProjectFileGeneration += OnGeneration;
}
private static string OnGeneration( string name, string content )
{
var document = XDocument.Parse( content );
var ns = document.Root.Name.Namespace;
var list = document.Root
.Descendants()
.Where( x => x.Name.LocalName == "PropertyGroup" )
.Descendants()
.Where( x => x.Name == ns + "NoWarn" )
;
foreach ( var xe in list )
{
xe.Value = xe.Value + ";0649";
}
var stream = new Utf8StringWriter();
document.Save( stream );
return stream.ToString();
}
private sealed class Utf8StringWriter : StringWriter
{
public override Encoding Encoding { get { return Encoding.UTF8; } }
}
}
警告不会在Visual Studio中输出
由于可能无法输出重要警告,我认为使用时应注意
https://developercommunity.visualstudio.com/content/problem/254578/cant-disable-warning-cs0
这篇关于Unity3d 周分享(9期 2018.12.31)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!