📜  如何在统一 2d 中编写 c# - C# (1)

📅  最后修改于: 2023-12-03 15:38:41.626000             🧑  作者: Mango

如何在 Unity 2D 中编写 C#

在 Unity 中编写 2D 游戏可以让你的游戏更具体验感和生动感。在 Unity 中编写 C# 也可以让你更好地控制和定制你的游戏。下面是一些在 Unity 2D 中编写 C# 的建议。

使用ScriptableObject

ScriptableObject 是 Unity 中的一种资源,它可以在编辑器中生成,并在运行时使用。使用 ScriptableObject 可以使代码更好地组织和管理,也可以降低需求操作的难度等级,实现代码的可读性和可扩展性。

以下是一个简单的 ScriptableObject 示例。

using UnityEngine;

[CreateAssetMenu(fileName = "New Weapon", menuName = "Inventory/Weapon")]
public class Weapon : ScriptableObject
{
    public string name = "New Weapon";
    public float damage = 10.0f;
}

这个 Weapon ScriptableObject 有一个名称和一个 float 型的伤害值。

简化变量定义

在 Unity 编辑器中定义变量时,可以使用方便的变量声明。例如,在 MonoBehavior 中,无需声明 private 字段:

public class Player : MonoBehaviour
{
    public Rigidbody2D rigidBody;
    public float jumpForce = 5.0f;

    private bool isJumping = false;

    void Update()
    {
        if (!isJumping && Input.GetButtonDown("Jump"))
        {
            isJumping = true;
            rigidBody.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
        }
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Ground"))
        {
            isJumping = false;
        }
    }
}

可以在代码中看到, Player 类中的变量可以在 MonoBehavior 上面声明。

使用命名空间

使用命名空间可以帮助我们更好地组织代码。例如,如果要创建一个使用命名空间的新类,我们可以这样做:

namespace MyNamespace
{
    public class MyClass
    {
        // Class content here
    }
}

在 Unity 中,我们可以使用默认命名空间来组织代码。例如,我们可以使用以下方法来组织我们的项目:

using UnityEngine;

public class MainMenu : MonoBehaviour
{
    public void StartGame()
    {
        // Start game
    }

    public void QuitGame()
    {
        // Quit game
    }
}
使用自定义 Inspector

使用自定义 Inspector 可以更好地组织和管理代码。 Unity 的 Inspector 允许你自定义属性、检查器、UI 和一些我自己习惯了的东西。以下是一个简单的示例。

using UnityEngine;

[CustomEditor(typeof(MyScript))]
public class MyScriptInspector : Editor
{
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        MyScript script = (MyScript)target;

        EditorGUILayout.BeginHorizontal();

        EditorGUILayout.LabelField("MyStringField", GUILayout.Width(100.0f));
        script.myStringField = EditorGUILayout.TextField(script.myStringField);

        EditorGUILayout.EndHorizontal();

        if (GUILayout.Button("Do Something"))
        {
            script.DoSomething();
        }
    }
}

public class MyScript : MonoBehaviour
{
    public string myStringField;

    public void DoSomething()
    {
        // Do something
    }
}

在这个脚本中,自定义 Inspector 允许我们更好地管理和控制我们的代码。

总结

这里介绍了如何在 Unity 2D 中编写 C#,包括如何使用 ScriptableObject、简化变量定义、使用命名空间、使用自定义 Inspector 等。我们希望这些提示能够帮助你写出更好的代码并更好地掌控你的 Unity 2D 游戏。