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();
}
}
效果图