unity3d 屏幕适配 iPhone X 解决方案

news/2024/7/16 5:27:14 标签: unity3d, 适配

添加获取手机型号方法

#import <sys/utsname.h>
+ (NSString*)getDeviceVersion
{
    struct utsname systemInfo;
    uname(&systemInfo);
    NSString *deviceVersion = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
    return deviceVersion;
}

在unity导出的xcode工程里面 查找路径 Unity-iPhone/Classes/Unity/DisplayManager.mm修改方法如下

- (void)updateScreenSize
{
    CGSize layerSize    = _view.layer.bounds.size;
    NSString *deviceVersion = [这里调用上面的获取型号方法];
    if ([deviceVersion isEqualToString:@"iPhone10,3"] || [deviceVersion isEqualToString:@"iPhone10,6"])
    {
        layerSize = CGSizeMake(744, 375);
    }
    CGFloat scale       = UnityScreenScaleFactor(_screen);
    _screenSize = CGSizeMake(layerSize.width * scale, layerSize.height * scale);
}

- (id)createView:(BOOL)useForRendering showRightAway:(BOOL)showRightAway;
{
    if(_view == nil)
    {
        NSString *deviceVersion = [这里调用上面的获取型号方法];
        if ([deviceVersion isEqualToString:@"iPhone10,3"] || [deviceVersion isEqualToString:@"iPhone10,6"])
        {
            CGRect bounds = CGRectMake(34, 0, 744, 375);
            _window  = [[UIWindow alloc] initWithFrame:bounds];
        }
        else
        {
            _window = [[UIWindow alloc] initWithFrame: _screen.bounds];
        }

        _window.screen = _screen;

        if(_screen == [UIScreen mainScreen])
        {
            _view = [GetAppController() initUnityView];
            NSAssert([_view isKindOfClass:[UnityView class]], @"You MUST use UnityView subclass as unity view");
        }
        else
        {
            _view = [(useForRendering ? [UnityRenderingView alloc] : [UIView alloc]) initWithFrame: _screen.bounds];
        }

        _view.contentScaleFactor = UnityScreenScaleFactor(self.screen);
        [self updateScreenSize];

        if(showRightAway)
        {
            [_window addSubview:_view];
            [_window makeKeyAndVisible];
        }
    }
    return self;
}

说明一下 以上是unity4.7 的修改方法 不同版本的unity 修改的地方可能不一样


http://www.niftyadmin.cn/n/1339115.html

相关文章

Centos7+Open***使用Windows AD验证登陆

我们上一篇你文章介绍了Centos7open***使用本地用户和密码验证登陆的配置介绍&#xff0c;今天我们介绍Centos7Open***使用Windows AD验证登陆&#xff0c;具体就不多介绍了&#xff0c;今天还是使用的是上一节安装的配置环境&#xff0c;对于今天的环境介绍&#xff0c;我们只…

unity3d 获取cpu 型号 android

很多人获取android cup型号并不是很准备 这里发布一下 获取cup比较准确的解决方案&#xff0c;直接上代码 C# public static string GetCPU(){string cpu ""; #if UNITY_ANDROIDtry{AndroidJavaClass unityPlayer new AndroidJavaClass("com.unity3d.player.…

unity3d 防外挂 王者农药 使用方案 android

防外挂 方案是 获取android设备上正在运行的应用进程,如果有被列为黑名称的app在运行 就跳出提示有外挂程序运行&#xff0c;匹配app 的方法的按照app 的名字和app 的包名 进行匹配,不废话上代码 C# public class PlugAppInfo //app 数据类 {public string name; public str…

架构师入门知识体系树

在网上看到的一个架构师培训课程的知识体系树&#xff0c;参考下。 课程简介&#xff1a; 本课程针对软件团队中的架构师和专业设计人员&#xff0c;全面阐述架构的范围&#xff0c;把握方法&#xff0c;以及关键实践。涉及&#xff1a;应用架构&#xff0c;逻辑架构&#xff0…

unity3d 获取剩余空间大小 android and ios

C# public static long GetFreeDiskSpace(){#if ( UNITY_ANDROID )try{ AndroidJavaClass unityPlayer new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaClass unityPluginLoader new AndroidJavaClass("java类全名");return unity…

there's no qt version assigned to this project for platform

VSQt编译一个新建的项目报theres no qt version assigned to this project for platform xxx的错误。 解决方案&#xff1a; 打开Qt_vs_addin的菜单&#xff0c;选择Qt Project Settings&#xff0c;正确设置Version。编译通过。转载于:https://www.cnblogs.com/airscrat/p/623…

unity3d 获取电量电池状态等 android and ios

获取电量 C# public static int GetBatteryLevel(){int level 0; #if UNITY_ANDROIDtry{AndroidJavaClass unityPlayer new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObject currentActivity unityPlayer.GetStatic<AndroidJavaObject…

tomcat由浅入深

零、服务器、Servlet容器、web容器 Servlet容器&#xff1a;能够运行Servlet的环境叫做Servlet容器 web容器&#xff1a;能够运行web应用的环境就叫做web容器 weblogic websphere tomcat 一、TOMCAT的安装 http://tomcat.apache.org/ 有解压版 和 安装版 还分windows 和 linux…