Unity 游戏框架搭建: 第七、第八个示例整理

本文探讨了如何在Unity中简化GameObject和Transform的API使用,通过创建GameObjectSimplify和TransformSimplify类,实现GameObject和Transform操作的简化。同时,文章还讲解了partial关键字的运用,展示了如何将多个部分类合并为一个完整类。

第七个示例整理

代码如下:
#if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class GameObejctActiveImprovements { #if UNITY_EDITOR [MenuItem("QFramework/13.GameObejct 的显示、隐藏简化")] #endif private static void MenuClicked() { var gameObject = new GameObject(); Hide(gameObject); } public static void Show(GameObject gameObj) { gameObj.SetActive(true); } public static void Hide(GameObject gameObj) { gameObj.SetActive(false); } } }
整理之后的代码如下:
GameObjectSimplifyExample.cs
using UnityEngine; namespace QFramework { public class GameObjectSimplifyExample { #if UNITY_EDITOR [UnityEditor.MenuItem("QFramework/Example/6.GameObejct API 简化", false, 7)] #endif private static void MenuClicked() { var gameObject = new GameObject(); GameObjectSimplify.Hide(gameObject); } } }
GameObjectSimplify.cs
using UnityEngine; namespace QFramework { public partial class GameObjectSimplify { public static void Show(GameObject gameObj) { gameObj.SetActive(true); } public static void Hide(GameObject gameObj) { gameObj.SetActive(false); } } }
目录如下:
菜单如下:

第八个示例整理

代码如下:
#if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public partial class TransformSimplify { public static void AddChild(Transform transform, Transform childTrans) { childTrans.SetParent(transform); } } public partial class GameObjectSimplify { public static void Show(Transform transform) { transform.gameObject.SetActive(true); } public static void Hide(Transform transform) { transform.gameObject.SetActive(false); } } public class PartialKeyword { #if UNITY_EDITOR [MenuItem("QFramework/8.partial 关键字", false, 9)] #endif private static void MenuClicked() { var parentTrans = new GameObject("Parent").transform; var childTrans = new GameObject("Child").transform; TransformSimplify.AddChild(parentTrans,childTrans); GameObjectSimplify.Hide(childTrans); } } }
第八个示例,代码相对有点特殊,因为我们当时是想学习 partial 关键字而写的。现在 partial 关键字对我们来说不是知识,而是用得非常熟悉的设计工具了。所以这个示例的内容就可以和 GameObjectSimplify 还有 TransformSimplify 合并了。
合并之后的代码如下:
第四个整理后的示例 TransformSimplifyExample.cs
using UnityEngine; namespace QFramework { public class TransformSimplifyExample { #if UNITY_EDITOR [UnityEditor.MenuItem("QFramework/Example/4.Transform API 简化", false, 5)] #endif private static void MenuClicked1() { var transform = new GameObject("transform").transform; TransformSimplify.SetLocalPosX(transform, 5.0f); TransformSimplify.SetLocalPosY(transform, 5.0f); TransformSimplify.SetLocalPosZ(transform, 5.0f); TransformSimplify.Identity(transform); var childTrans = new GameObject("Child").transform; TransformSimplify.AddChild(transform,childTrans); } } }
第六个整理后的示例 GameObjectSimplifyExample.cs
using UnityEngine; namespace QFramework { public class GameObjectSimplifyExample { #if UNITY_EDITOR [UnityEditor.MenuItem("QFramework/Example/6.GameObejct API 简化", false, 7)] #endif private static void MenuClicked() { var gameObject = new GameObject(); GameObjectSimplify.Hide(gameObject); GameObjectSimplify.Hide(gameObject.transform); } } }
GameObjectSimplify.s
using UnityEngine; namespace QFramework { public partial class GameObjectSimplify { public static void Show(GameObject gameObj) { gameObj.SetActive(true); } public static void Hide(GameObject gameObj) { gameObj.SetActive(false); } public static void Show(Transform transform) { transform.gameObject.SetActive(true); } public static void Hide(Transform transform) { transform.gameObject.SetActive(false); } } }
TransformSimplify.cs
using UnityEngine; namespace QFramework { public partial 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 static void AddChild(Transform transform, Transform childTrans) { childTrans.SetParent(transform); } } }
目录如下:
菜单栏如下:
OK,今天的内容就这些,我们整理了两个示例,遇到了一个可以合并的示例。我们下一篇再见,拜拜~
转载请注明地址:liangxiegame.com 订阅全套专栏或参加小班:liangxiegame.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值