Unity FairyGUI(二)

Unity FairyGUI(二)

一.元件

每个舞台中的组成元素我们称之为元件,元件的类型有很多,他们是:

  • 基础元件 图片、图形、动画、装载器、文本、富文本、组、组件。
  • 组合型元件 标签、按钮、下拉框、滚动条、滑动条、进度条。
  • 特殊元件 列表。
    组件类(GComponent)继承原件类(GObject)
    官方元件文档链接
public class Lesson12 : MonoBehaviour
{
    private void Start()
    {
        GRoot.inst.SetContentScaleFactor(1365, 768,
            UIContentScaler.ScreenMatchMode.MatchHeight);
        var pack = UIPackage.AddPackage("Package1");
        foreach (var item in pack.dependencies)
            UIPackage.AddPackage(item["name"]);
        var com = UIPackage.CreateObject("Package1", "LearnFGUI").asCom;
        GRoot.inst.AddChild(com);
        var gObj = com.GetChild("btnEnter");
        gObj.x = 0;
        gObj.y = 0;
        gObj.SetPosition(0,0,0);
        gObj.SetSize(100,100);
        gObj.width = 1000;
        gObj.height = 1000;
        gObj.minHeight = 500;
        gObj.maxHeight = 800;
        gObj.scale = Vector2.one;
        gObj.SetPivot(0,0,true);
        gObj.visible = true;
        gObj.touchable = false;
        gObj.grayed = true;
        gObj.enabled = true;
        gObj.rotation = 90;
        Debug.Log(gObj.displayObject.gameObject);
        Debug.Log(gObj.resourceURL);
        //销毁组件
        //gObj.Dispose();
        Debug.Log(gObj.packageItem.name);
        Debug.Log(gObj.name);
        Debug.Log(gObj.gameObjectName);
        Debug.Log(gObj.onStage);
        //自定义数据
        //Debug.Log(gObj.data);
    }
}

二.图片元件

官网文档

public class Lesson13 : MonoBehaviour
{
    [SerializeField] private Texture2D _texture2D;
    private void Start()
    {
        GRoot.inst.SetContentScaleFactor(1365, 768,
            UIContentScaler.ScreenMatchMode.MatchHeight);
        var pack = UIPackage.AddPackage("Package1");
        foreach (var item in pack.dependencies)
            UIPackage.AddPackage(item["name"]);
        var com = UIPackage.CreateObject("Package1", "LearnFGUI").asCom;
        GRoot.inst.AddChild(com);
        var img = com.GetChild("n3").asImage;//这里的名字和下面resName不同
        var img2 = UIPackage.CreateObject("Package1", "ui_DL_kuang_01").asImage;
        com.AddChild(img2);
        img2.fillMethod = FillMethod.Horizontal;
        img2.fillAmount = 0.5f;

        //img2.shader = "xxx";
        //img2.material = ;
        
        img.texture = new NTexture(_texture2D);
    }
}
  • 高清资源选择
  • 做过APP开发的小伙伴应该对这个机制比较熟悉。例如我们为IPhone8设计的一套界面,分辨率是1334x750,用到一个图片a.png,这套UI到IPhone XS Max显示时,a.png就需要被放大两倍显示,放大的结果通常是比原图模糊。因此我们会准备一个a@2x.png,用作这种情况显示,使界面显示效果呈现高清的效果。
  • 在这里插入图片描述

三.图形元件

官方文档

  • 用途:用于遮罩,雷达图,等
  • 动态创建图形需要注意一定要设置图形的大小,否则显示不出来。
public class Lesson14 : MonoBehaviour
{
    private void Start()
    {
        GRoot.inst.SetContentScaleFactor(1365, 768,
            UIContentScaler.ScreenMatchMode.MatchHeight);
        var pack = UIPackage.AddPackage("Package1");
        foreach (var item in pack.dependencies)
            UIPackage.AddPackage(item["name"]);
        var com = UIPackage.CreateObject("Package1", "LearnFGUI").asCom;
        GRoot.inst.AddChild(com);

        var graph = com.GetChild("n11").asGraph;
        //graph.DrawRect(50,50,1,Color.black, Color.red);
        graph.DrawEllipse(100,100,Color.green);
        
        //动态创建图形
        var graph2 = new GGraph();
        graph2.DrawEllipse(200,200,Color.yellow);
        graph2.SetPosition(500,500,0);
        com.AddChild(graph2);
        
        //插入Unity中的对象到空白图形中
        //之后会有实现
        //var graph3 = com.GetChild("xxx").asGraph
        //graph3.SetNativeObject();
    }
}

效果图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值