第七个示例整理
代码如下:
#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
本文探讨了如何在Unity中简化GameObject和Transform的API使用,通过创建GameObjectSimplify和TransformSimplify类,实现GameObject和Transform操作的简化。同时,文章还讲解了partial关键字的运用,展示了如何将多个部分类合并为一个完整类。

被折叠的 条评论
为什么被折叠?



