FairyGUI学习

这篇博客介绍了如何在FairyGUI中创建UI组件并导出到Unity,以及在Unity中加载和使用这些组件。作者详细展示了从创建WindowFrame和Window,到设置人物状态按钮和旋转功能的全过程。同时,文中还提供了Unity端的加载人物状态纹理的代码实现,并通过事件监听处理人物旋转操作。
摘要由CSDN通过智能技术生成

官方文档&UnitySDK

官方文档
UnitySDK

关于Fairy导出及使用

在FairyGUI中导出的文件,在加载方面相关的命名有着许多的困惑,在自己调试了之后解决了问题。

首先是在FairyGUI中我们已经做好的组件,名字是这样的
在这里插入图片描述

然后打包到unity中是这样的
在这里插入图片描述
最后加载相关的代码是这样的
在这里插入图片描述
也就是说加载的话用的名字是和FairyGUI中的一样。

官方案例

人物状态

(1)首先在FairyGUI创建一个WindowFrame组件(设置基本的背景,关闭按钮,拖拽区域),这个命名按照规范命名的话可以使用官方封装好的方法
在这里插入图片描述

基本预览图如图所示
在这里插入图片描述

(2)然后创建一个Window添加相应的功能,比如人物的旋转按钮以及人物的加载
在这里插入图片描述

这个Graph属性中图形设置为空白。
(3)设置界面的人物状态弹出按钮,导出到Unity中,记得在Unity中安装SDK
在这里插入图片描述
这里就来到了Unity
(4)首先创建一个UIPanel设置其中的PackageName
(5)创建一个人物并创建一个专属的相机对准这个人物,并且创建一个RenderTexture赋值给我们新创建的相机,在创建一个这张RenderTexture的专属材质球。这些在我们记载这个人物状态(图片右下角)的时候会用到。
在这里插入图片描述
(6)为这个UIPanel创建脚本并且添加上去

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FairyGUI;

public class CharacterState : MonoBehaviour
{
    public GameObject player;


    private GComponent mainUI;
    private Window window;

    private GButton btnCharacter;
    private GButton btnLeft;
    private GButton btnRight;

    private void Start()
    {
        mainUI = GetComponent<UIPanel>().ui;
        window = new Window();
        window.contentPane = UIPackage.CreateObject("CharacterState", "Window").asCom;
     
        WindowComInit();
    }

    private void WindowComInit()
    {
        //角色状态按钮的获取&事件的注册
        btnCharacter = mainUI.GetChild("n1").asButton;
        btnCharacter.onClick.Add(OnCharacterBtnClick);

        //旋转按钮的获取&事件注册
        btnLeft = window.contentPane.GetChild("n2").asButton;
        btnRight = window.contentPane.GetChild("n3").asButton;
        btnLeft.onClick.Add(OnBtnLeftClick);
        btnRight.onClick.Add(OnBtnRightClick);
            
        LoadCharacterTexture();
    }

    private void LoadCharacterTexture()
    {
        GGraph gGraph = window.contentPane.GetChild("n1").asGraph;
        Image image = new Image();
        RenderTexture renderTexture = Resources.Load<RenderTexture>("Model/PlayerRT");
        Material mat = Resources.Load<Material>("Model/PlayerMat");

        image.texture = new NTexture(renderTexture);
        image.material = mat;
        gGraph.SetNativeObject(image);

    }

    /// <summary>
    /// 角色状态的按钮事件
    /// </summary>
    private void OnCharacterBtnClick()
    {
        window.Show();
        window.SetPosition(400, 300, 0);
    }

    private void OnBtnRightClick()
    {
        Debug.Log("right");
        player.transform.Rotate(Vector3.up * 30, Space.World);
    }

    private void OnBtnLeftClick()
    {
        Debug.Log("left");
        player.transform.Rotate(Vector3.up * -30, Space.World);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值