第九个示例
目前代码如下:
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace QFramework
{
public class ResolutionCheck
{
#if UNITY_EDITOR
[MenuItem("QFramework/9.屏幕宽高比判断")]
#endif
private static void MenuClicked()
{
Debug.Log(IsPadResolution() ? "是 Pad 分辨率" : "不是 Pad 分辨率");
Debug.Log(IsPhoneResolution() ? "是 Phone 分辨率" : "不是 Phone 分辨率");
Debug.Log(IsiPhoneXResolution() ? "是 iPhone X 分辨率" : "不是 iPhone X 分辨率");
}
/// <summary>
/// 获取屏幕宽高比
/// </summary>
/// <returns></returns>
public static float GetAspectRatio()
{
return Screen.width > Screen.height ? (float) Screen.width / Screen.height : (float) Screen.height / Screen.width;
}
/// <summary>
/// 是否是 Pad 分辨率 4 : 3
/// </summary>
/// <returns></returns>
public static bool IsPadResolution()
{
var aspect = GetAspectRatio();
return aspect > 4.0f / 3 - 0.05 && aspect < 4.0f / 3 + 0.05;
}
/// <summary>
/// 是否是手机分辨率 16:9
/// </summary>
/// <returns></returns>
public static bool IsPhoneResolution()
{
var aspect = GetAspectRatio();
return aspect > 16.0f / 9 - 0.05 && aspect < 16.0f / 9 + 0.05;
}
/// <summary>
/// 是否是iPhone X 分辨率 2436:1125
/// </summary>
/// <returns></returns>
public static bool IsiPhoneXResolution()
{
var aspect = GetAspectRatio();
return aspect > 2436.0f / 1125 - 0.05 && aspect < 2436.0f / 1125 + 0.05;
}
}
}
第九个示例没有太大的问题,不管是类名还是目录名、菜单名、代码文件名,以及它每个方法所在的类都没有太大的问题。
所以只需要更改菜单的顺序就好了。
更改后,MenuItem 代码如下:
#if UNITY_EDITOR
[MenuItem("QFramework/4.屏幕宽高比判断", false, 4)]
#endif
private static void MenuClicked()
{
Debug.Log(IsPadResolution() ? "是 Pad 分辨率" : "不是 Pad 分辨率");
Debug.Log(IsPhoneResolution() ? "是 Phone 分辨率" : "不是 Phone 分辨率");
Debug.Log(IsiPhoneXResolution() ? "是 iPhone X 分辨率" : "不是 iPhone X 分辨率");
}
目录结构如下:
第九个示例很容易整理成第四个示例。
第十个示例
目前代码如下:
#if UNITY_EDITOR
using UnityEditor;
#endif
using UnityEngine;
namespace QFramework
{
public class TransformLocalPosImprovements
{
#if UNITY_EDITOR
[MenuItem("QFramework/10.Transform 赋值优化")]
#endif
private static void GenerateUnityPackageName()
{
var transform = new GameObject("transform").transform;
TransformSimplify.SetLocalPosX(transform, 5.0f);
TransformSimplify.SetLocalPosY(transform, 5.0f);
TransformSimplify.SetLocalPosZ(transform, 5.0f);
}
}
}
做如下更改:
- MenuItem:10.Transform 赋值优化 => 5.Transform 赋值优化 并加上顺序号 5。
- 目录名:10.Transform 赋值优化 = > 5.Transform 赋值优化。
- MenuItem 方法名:GenerateUnityPackageName => MenuClicked
这样就可以了。
更改后菜单如下:
目录结构如下:
到目前为止还比较顺利。但是呢代码中使用的 TransformSimplify 这个类,是在别的文件中定义的。
而目前的这个示例仅仅有 MenuItem 方法,没有 TransformSimplify 实现代码,为什么会这样呢?
因为我们在整理之前,对 Transform 的 API 做了两次简化,而我们的示例是一个一个独立写的,所以第一次简化的时候写了一个示例并且创建了一个 Transform 的简化类,第二次也一样也创建了一个 Transform 的简化类,而这两个类在之后整理的时候被合并成一个 Transform 的简化类了。
这种情况,我们以后还会遇到的,可能有无数个 Transform 的简化方法。而我们的写示例的顺序,就是一个示例一个示例地写,这样写的好处就是初学者友好,也比较容易收集知识点。但是随着示例越写越多,会产生一些问题,比如代码重复实现,类需要合并等等,以目前我们的实力来说是没法搞定的,我们要学习新的东西。但是新的东西,要在我们排序完菜单顺序比较好一些。
这个问题我们先记下来。
要做的事情:
- (完成) 备份:导出文件,并取一个合理的名字。
- 整理完菜单顺序后,学习新的知识,解决随着示例增多可能出现类需要合并的问题。
第十个示例,就整理到了第五个示例,我们下一篇再见,拜拜~
转载请注明地址:凉鞋的笔记:liangxiegame.com
更多内容
-
QFramework 地址:https://github.com/liangxiegame/QFramework
-
QQ 交流群:623597263
-
Unity 进阶小班:
- 主要训练内容:
- 框架搭建训练(第一年)
- 跟着案例学 Shader(第一年)
- 副业的孵化(第二年、第三年)
- 权益、授课形式等具体详情请查看《小班产品手册》:https://liangxiegame.com/master/intro
- 主要训练内容:
-
关注公众号:liangxiegame 获取第一时间更新通知及更多的免费内容。