分类 Unity 下的文章

Unity Vuforia在运行时动态创建图像目标

0 条评论 Unity AR 帅木

Vuforia在运行时动态加载图片作为识别对象 官方文档:https://developer.vuforia.com/library/objects/instant-image-targets using System.IO; using UnityEngine; using Vuforia; public class SideLoadImageTarget...

Unity RuntimeInitializeOnLoadMethod

0 条评论 Unity 无标签 帅木
使用[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]属性,可以在不挂载到任何游戏对象上的情况下在程序运行时执行此方法,方便在在程序初始化前做一些额外的初始化工作。

类似功能的有InitializeOnLoad(最先执行)、InitializeOnLoadMethod(第二执行)、RuntimeInitializeOnLoadMethod,前两个用在编辑器,第三个用在运行时,用法如下:

[InitializeOnLoad]
public class InitializeOnLoadTest
{
    /// <summary>
    /// 第一次打开 Unity 编辑器运行一次,脚本编译完成后运行一次,每次进入 Play 模式都运行一次。
    /// </summary>
    static InitializeOnLoadTest()
    {
        Debug.Log("InitializeOnLoad");
    }
}

 /// <summary>
 /// 第一次打开 Unity 编辑器运行一次,脚本编译完成后运行一次,每次进入 Play 模式都运行一次。
 /// </summary>
 [InitializeOnLoadMethod]
 private static void InitOnLoad1()
 {
     Debug.Log("InitializeOnLoadMethod");
 }

 /// <summary>
 /// 在每次进入 Play 模式时运行一次,还可以通过参数确定在加载场景之前还是之后调用方法。
 /// </summary>
 [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
 public static void Init()
 {
     Instantiate(Resources.Load<GameObject>("AppQuit")); 
 }
RuntimeInitializeLoadType更多参数如下所示:

AfterSceneLoad:在场景加载之后执行。
BeforeSceneLoad:在场景加载之前执行。
AfterAssembliesLoaded:所有程序集加载完成并且预加载的资源初始化后执行。
BeforeSplashScreen:在启动画面显示之前执行。
SubsystemRegistration:用于子系统(如图形、音频等)注册的回调。

Unity播放视频Unexpected timestamp values detected

0 条评论 Unity 无标签 帅木

使用Unity播放视频的时警告:Unexpected timestamp values detected


解决方案:

1.按照要求使用Baseline Profile.

2.在Unity的Inspector中启用Transcode,Apply进行转码。

Vuforia 安卓设备相机闪烁黑色条纹

0 条评论 Unity 无标签 帅木

安卓设备上Vuforia在识别追踪过程中相机视频背景闪烁黑色条纹
解决方案:
1.删除图形API中Vulkan,添加OpenGLES3/OpenGLES2
2.启用 Auto Graphics API

Unity PC发布后UI模型天空盒显示不正常花屏

0 条评论 Unity Unity 帅木

部分图片显示异常,模型也有缺失,天空盒也变成了奇奇怪怪的。

经过反复测试加上某一模块之后就会变成这样,然后把所有图片清晰度都砍了一半就好了。

压缩后发布一切正常,包体缩小了1G左右。



可能是包体体积太大?(assets文件单个5G)

可能是图片清晰度太高?

可能是图片格式不对?



5.jpg

Unity 使用泛型方法AddComponent

0 条评论 Unity Unity 泛型 帅木
使用泛型添加组件:
private T AddComponent<T>(GameObject obj) where T : Component
    {
        if (obj.GetComponent<T>() == null)
        {
            return obj.AddComponent<T>();
        }
        else
        {
            return obj.GetComponent<T>();
        }
    }