OnGUI

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using Newtonsoft.Json;
using System.IO;
using System;
public class Windows : EditorWindow
{

    static AnimatorOverrideController animator;
    [MenuItem("Tool/Skill #Q")]
    public static void Open()
    {
        GetWindow<Windows>().Show(false); 
    }
    GameObject player;
    string table_name;
    int skill_id;
    string skill_name;
    string skill_des;
    AnimationClip clip;
    AudioClip audio;
    ParticleSystem particle;
    GameObject tx;
    GameObject tx_game;
    List<string> att_list = new List<string>() { null, Att.单体.ToString(), Att.小范围AOE.ToString(), Att.群体.ToString() };
    List<string> job_list = new List<string>() { null, Job.打野.ToString(), Job.坦克.ToString(), Job.射手.ToString(), Job.战士.ToString(), Job.法师.ToString(), Job.辅助.ToString() };
    int job_index = 0;
    int att_index = 0;
    float scope;
    float cd;
    float front;
    List<string> track_list = new List<string>() {null,Track.抛物线.ToString(), Track.曲线.ToString(), Track.直线.ToString() };
    List<Track> tracks = new List<Track>() {Track.直线,Track.抛物线,Track.曲线 };
    int track_index;
    int track_index2;
    Texture texture;
    [Obsolete]
    private void OnGUI()
    {
        GUILayout.BeginVertical();

        GUILayout.BeginHorizontal();
        GUILayout.Label("请输入配置表名称:");
        table_name = GUILayout.TextField(table_name);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("请输入技能ID:");
        skill_id = EditorGUILayout.IntField(skill_id);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("请输入技能名称:");
        skill_name = GUILayout.TextField(skill_name);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("请输入技能描述:");
        skill_des = GUILayout.TextField(skill_des);
        GUILayout.EndHorizontal();

        texture = Resources.Load<Texture>("KatarinaLoadScreen");
        if (GUILayout.Button(texture,GUILayout.Width(50),GUILayout.Height(50)))
        {
            Debug.Log(texture.name);
        }

        GUILayout.BeginHorizontal();
        GUILayout.Label("请设置技能CD:");
        cd =EditorGUILayout.FloatField(cd);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("请设置技能前摇:");
        front = EditorGUILayout.FloatField(front);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("请设置技能轨迹:");
        track_index = EditorGUILayout.Popup(track_index, track_list.ToArray()) ;
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("请选择技能动画:");
        clip = (AnimationClip)EditorGUILayout.ObjectField(clip, typeof(AnimationClip));
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("请选择技能音效:");
        audio = (AudioClip)EditorGUILayout.ObjectField(audio, typeof(AudioClip));
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("请选择技能特效:");
        tx = (GameObject)EditorGUILayout.ObjectField(tx, typeof(GameObject));
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("请选择角色职业:");
        job_index = EditorGUILayout.Popup(job_index, job_list.ToArray());
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("请选择角色攻击类型:");
        att_index = EditorGUILayout.Popup(att_index, att_list.ToArray());
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("请设置攻击范围:");
        scope = EditorGUILayout.FloatField(scope);
        GUILayout.EndHorizontal();
        if (GUILayout.Button("保存"))
        {
            SkillData data = new SkillData();
            data.id = skill_id;
            data.name = skill_name;
            data.des = skill_des;
            data.animationClip = "/Resources/阿卡丽/" + clip.name;
            data.audioClip = audio.name;
            data.job = job_list[job_index];
            data.att = att_list[att_index];
            data.scope = scope;
            string info = JsonConvert.SerializeObject(data);
            File.WriteAllText("Assets/SkillConfigurationTable/" + table_name + ".json", info);
            AssetDatabase.Refresh();
        }
        if (GUILayout.Button("播放"))
        {
            player = GameObject.Find("taunt");
            animator = new AnimatorOverrideController(player.GetComponent<Animator>().runtimeAnimatorController);
            player.GetComponent<Animator>().runtimeAnimatorController = animator;
            animator["run"] = clip;
            player.GetComponent<Animator>().Play("run");
            AudioSource source = player.GetComponent<AudioSource>();
            source.clip = audio;
            source.Play(0);
            if (tx_game == null)
            {
                tx_game = Instantiate(AssetDatabase.LoadAssetAtPath<GameObject>(AssetDatabase.GetAssetPath(tx)));
                tx_game.transform.position = player.transform.position+Vector3.up*0.5f+Vector3.forward*-1f;
                tx_game.transform.eulerAngles = player.transform.eulerAngles;
            }
            else
            {
                particle = tx_game.GetComponent<ParticleSystem>();
                particle.Play(true);
            }
        }

        GUILayout.EndVertical();
    }
}

代码如下,效果如下

OnGUI的一些常用API(不完整),具体可以看一下ObjectField怎么去设置类型

还有一点就是播放逻辑

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值