Unity 游戏框架搭建 2019 (三十五) 整理接近尾声

OK,我们接着整理第十一个示例

第十一个示例

代码如下


using System;
#if UNITY_EDITOR
using UnityEditor;
#endif

using UnityEngine;

namespace QFramework
{
	public class TransformSimplify
	{
		/// <summary>
		/// 重置操作
		/// </summary>
		/// <param name="trans">Trans.</param>
		public static void Identity(Transform trans)
		{
			trans.localPosition = Vector3.zero;
			trans.localScale = Vector3.one;
			trans.localRotation = Quaternion.identity;
		}
		
		public static void SetLocalPosX(Transform transform, float x)
		{
			var localPos = transform.localPosition;
			localPos.x = x;
			transform.localPosition = localPos;
		}
		
		public static void SetLocalPosY(Transform transform, float y)
		{
			var localPos = transform.localPosition;
			localPos.y = y;
			transform.localPosition = localPos;
		}
		
		public static void SetLocalPosZ(Transform transform, float z)
		{
			var localPos = transform.localPosition;
			localPos.z = z;
			transform.localPosition = localPos;
		}
		
		public static void SetLocalPosXY(Transform transform, float x, float y)
		{
			var localPos = transform.localPosition;
			localPos.x = x;
			localPos.y = y;
			transform.localPosition = localPos;
		}
		
		public static void SetLocalPosXZ(Transform transform, float x, float z)
		{
			var localPos = transform.localPosition;
			localPos.x = x;
			localPos.z = z;
			transform.localPosition = localPos;
		}
		
		public static void SetLocalPosYZ(Transform transform, float y, float z)
		{
			var localPos = transform.localPosition;
			localPos.y = y;
			localPos.z = z;
			transform.localPosition = localPos;
		}
	}
	
	public class TransformIdentity : MonoBehaviour
	{
		
#if UNITY_EDITOR
		[MenuItem("QFramework/11.Transform 归一化")]
#endif
		private static void MenuClicked()
		{
			var transform = new GameObject("transform").transform;

			TransformSimplify.Identity(transform);
		}
	}
}

这个示例可以和第五个示例进行合并。

合并后的代码如下:

#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
#endif

namespace QFramework
{
	public class TransformSimplify
	{
#if UNITY_EDITOR
		[MenuItem("QFramework/5.Transform API 简化/1.赋值优化", false, 5)]
#endif
		private static void MenuClicked1()
		{
			var transform = new GameObject("transform").transform;

			SetLocalPosX(transform, 5.0f);
			SetLocalPosY(transform, 5.0f);
			SetLocalPosZ(transform, 5.0f);
		}
		
#if UNITY_EDITOR
		[MenuItem("QFramework/5.Transform API 简化/2.重置", false 6)]
#endif
		private static void MenuClicked2()
		{
			var transform = new GameObject("transform").transform;

			Identity(transform);
		}
		
		/// <summary>
		/// 重置操作
		/// </summary>
		/// <param name="trans">Trans.</param>
		public static void Identity(Transform trans)
		{
			trans.localPosition = Vector3.zero;
			trans.localScale = Vector3.one;
			trans.localRotation = Quaternion.identity;
		}
		
		public static void SetLocalPosX(Transform transform, float x)
		{
			var localPos = transform.localPosition;
			localPos.x = x;
			transform.localPosition = localPos;
		}
		
		public static void SetLocalPosY(Transform transform, float y)
		{
			var localPos = transform.localPosition;
			localPos.y = y;
			transform.localPosition = localPos;
		}
		
		public static void SetLocalPosZ(Transform transform, float z)
		{
			var localPos = transform.localPosition;
			localPos.z = z;
			transform.localPosition = localPos;
		}
		
		public static void SetLocalPosXY(Transform transform, float x, float y)
		{
			var localPos = transform.localPosition;
			localPos.x = x;
			localPos.y = y;
			transform.localPosition = localPos;
		}
		
		public static void SetLocalPosXZ(Transform transform, float x, float z)
		{
			var localPos = transform.localPosition;
			localPos.x = x;
			localPos.z = z;
			transform.localPosition = localPos;
		}
		
		public static void SetLocalPosYZ(Transform transform, float y, float z)
		{
			var localPos = transform.localPosition;
			localPos.y = y;
			localPos.z = z;
			transform.localPosition = localPos;
		}
	}
}

菜单如下:
006tNc79gy1fzfrgcolu4j30bj05v40v.jpg

目录及文件如下:

006tNc79gy1fzfrgfic15j30m40c6wgh.jpg

而第一个示例的文件夹已经被笔者删除了。

第十二个示例

代码如下

using System;

#if UNITY_EDITOR
using UnityEditor;
#endif

using UnityEngine;
using Random = UnityEngine.Random;

namespace QFramework
{
	public class MathUtil
	{
		/// <summary>
		/// 输入百分比返回是否命中概率
		/// </summary>
		public static bool Percent(int percent)
		{
			return Random.Range (0, 100) <= percent;
		}
	}
	public class PercentFunction : MonoBehaviour
	{
#if UNITY_EDITOR
		[MenuItem("QFramework/12.概率函数")]
#endif
		private static void MenuClicked()
		{
			Debug.Log(MathUtil.Percent(50));
		}
	}
}

整理步骤:

  1. 合并 MathUtil 类和 PercentFunction 类为 MathUtil.cs
  2. 菜单的标题 从 12 改成 6,而顺序改成 7 (因为 5 和 6 已经被第五个示例用了)。
  3. 目录名改成与菜单名一致。

更改后代码如下:

#if UNITY_EDITOR
using UnityEditor;
#endif

using UnityEngine;
using Random = UnityEngine.Random;

namespace QFramework
{
	public class MathUtil
	{
		/// <summary>
		/// 输入百分比返回是否命中概率
		/// </summary>
		public static bool Percent(int percent)
		{
			return Random.Range (0, 100) <= percent;
		}

#if UNITY_EDITOR
		[MenuItem("QFramework/6.概率函数", false, 7)]
#endif
		private static void MenuClicked()
		{
			Debug.Log(Percent(50));
		}
	}
}

目录结构如下
006tNc79gy1fzfrgl47anj30iq09sq49.jpg

菜单如下
006tNc79gy1fzfrgppbsjj30i00aegrz.jpg

OK,第十二个示例整理完了

第十三个示例

代码如下:

#if UNITY_EDITOR
using UnityEditor;
#endif
 
using UnityEngine;

namespace QFramework
{
    public class GameObjectSimplify
    {
        public static void Show(GameObject gameObj)
        {
            gameObj.SetActive(true);
        }

        public static void Hide(GameObject gameObj)
        {
            gameObj.SetActive(false);
        }
    }
    
    public class GameObejctActiveImprovements
    {
#if UNITY_EDITOR
        [MenuItem("QFramework/13.GameObejct 的显示、隐藏简化")]
#endif
        private static void MenuClicked()
        {
            var gameObject = new GameObject();

            GameObjectSimplify.Hide(gameObject);
        }
    }
}

整理步骤:

  1. 类合并为 GameObjectSimplify
  2. 菜单顺序更改以及标题顺序更改
  3. 代码文件名和目录更改

整理之后代码如下:

#if UNITY_EDITOR
using UnityEditor;
#endif
 
using UnityEngine;

namespace QFramework
{
    public class GameObjectSimplify
    {
        public static void Show(GameObject gameObj)
        {
            gameObj.SetActive(true);
        }

        public static void Hide(GameObject gameObj)
        {
            gameObj.SetActive(false);
        }

#if UNITY_EDITOR
        [MenuItem("QFramework/7.GameObejct API 简化/显示、隐藏简化", false, 8)]
#endif
        private static void MenuClicked()
        {
            var gameObject = new GameObject();

            Hide(gameObject);
        }
    }
}

编译之后,菜单栏编程如下:
006tNc79gy1fzfrgv15puj30nu09w465.jpg

目录结构如下:

006tNc79gy1fzfrgy93eej30iq0aw0u6.jpg

到此,全部的菜单顺序整理完了。

小结:

遗留问题:

  • (完成) 第八个示例与之前的示例代码重复,功能重复。
  • (完成) 方法所在类的命名有问题。
  • (完成) 菜单栏显示顺序问题(new)。
  • (完成) 弃用的代码警告

遗留问题终于全部解决了,我们的整理阶段也要接近尾声了。

今天就写到这,我们下一篇再见,拜拜~ 。

转载请注明地址:凉鞋的笔记:liangxiegame.com

更多内容

  • QFramework 地址:https://github.com/liangxiegame/QFramework

  • QQ 交流群:623597263

  • Unity 进阶小班

    • 主要训练内容:
      • 框架搭建训练(第一年)
      • 跟着案例学 Shader(第一年)
      • 副业的孵化(第二年、第三年)
    • 权益、授课形式等具体详情请查看《小班产品手册》:https://liangxiegame.com/master/intro
  • 关注公众号:liangxiegame 获取第一时间更新通知及更多的免费内容。

原创文章 73 获赞 265 访问量 5万+

猜你喜欢

转载自blog.csdn.net/u010125551/article/details/105467924