初始化组件的四种方式

初始化组件

简介
在流水线似的开发中,某个脚本可以重复利用,其脚本上的属性有些也是固定的,在Inspector面板不想一次次拖拽,一次次给其赋值。
示例
请添加图片描述
解释说明
第一种:点 isOn 给脚本属性赋值
第二种:右键脚本,点击 “初始化脚本属性值”
第三种:分别右键脚本上的属性 点击“重置”
第四种:(脚本要放在Editor文件夹下)
代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InitComponent : MonoBehaviour
{
#region 示例属性
[ContextMenuItem(“重置”, “RestHp”)]
public int Hp;
[ContextMenuItem(“重置”, “RestName”)]
public string Name;
[ContextMenuItem(“重置”, “RestCamera”)]
public Camera cam;
#endregion
void Start()
{

}

void Update()
{
    
}
#region 第一种方式
public bool isOn;
private void OnValidate()
{
    if (isOn)
    {
        Hp = 100;
        Name = "孙悟空";
        cam = Camera.main;
        isOn = false;
    }
}
#endregion
#region 第二种方式
[ContextMenu("初始化脚本组件的属性值")]
private void InitComValue()
{
    Hp = 50;
    Name = "玉皇大帝";
    cam = Camera.main;
}
#endregion
#region 第三种方式
void RestHp()
{
    Hp = 0;
}
void RestName()
{
    Name = null;
}
void RestCamera()
{
    cam = null;
}
#endregion

}

第四种
[MenuItem(“CONTEXT/Transform/test”)]//给组件添加按钮:CONTEXT+组件名+按钮名
static void Test4(MenuCommand menuCommand)//MenuCommand 正在操作的组件
{
Transform trans = (Transform)menuCommand.context;
Undo.RecordObject(trans, “trans”);//记录在此函数之后对trans对象做出的任何更改
trans.localScale = Vector3.forward;
Debug.Log(trans.localScale);
Undo.DestroyObjectImmediate(trans.gameObject);//Undo记录操作
}

猜你喜欢

转载自blog.csdn.net/hyt0626/article/details/127468876