Laya demo 运行后,输入文本问题

回复

LayaRichZhang 发起了问题 • 1 人关注 • 0 个回复 • 5 次浏览 • 3 小时前 • 来自相关话题

列表裁剪预制体问题

回复

Unityzzzxaa 回复了问题 • 1 人关注 • 1 个回复 • 16 次浏览 • 1 天前 • 来自相关话题

视频教程里面的中文文档的网址是多少?

Egret王太新 回复了问题 • 4 人关注 • 3 个回复 • 1713 次浏览 • 3 天前 • 来自相关话题

在插件中如何做到“关闭工程重新打开”的效果?

回复

编辑器使用misakacirno 回复了问题 • 1 人关注 • 1 个回复 • 60 次浏览 • 5 天前 • 来自相关话题

在插件中实现控制台清空和插件刷新

编辑器使用misakacirno 发表了文章 • 0 个评论 • 25 次浏览 • 2025-12-17 15:15 • 来自相关话题

控制台在API中直接暴露出来可获取,相对来说简单一些:
let consoleViewRoot: CS.FairyGUI.GComponent = App.consoleView.GetChildAt(0).asCom;
let clearButton: CS.FairyGUI.GButton = consoleViewRoot.GetChild("btnClear").asButton;
clearButton.onClick.Call();同时,通过这个途径,我们也可以获取控制台中的所有内容:
export function GetConsoleLines(): string[] {
/**
* ConsoleView的结构
* - ""(GComponenet)
* - "list"(GList)
* - "n12"(GGraph)
* - "btnCopy"(GButton)
* - "btnClear"(GButton)
* - "n9"(GGroup)
*/

let result: string[] = [];

let consoleViewRoot: CS.FairyGUI.GComponent = App.consoleView.GetChildAt(0).asCom;
let consoleList: CS.FairyGUI.GList = consoleViewRoot.GetChild("list").asList;

if (consoleList == null) {
console.warn("未找到Console列表");
return result;
}

console.log(`Console List Item Count: ${consoleList.numItems}`);
for (let i = 0; i < consoleList.numItems; i++) {
let item: CS.FairyGUI.GButton = consoleList.GetChildAt(i).asButton;
// console.log(`Console List Item ${i}: ${item.name} | ${item.GetType().FullName} | ${item.text}`);
result.push(item.text);
}

return result;
}
 
而插件并没有类似于 App.pluginView 的东西可以直接访问,经过一些研究,我发现它被存储于 App.viewManager 之中。
 
App.viewManager 内部应该是有个列表来管理成员,通过遍历其 viewIds 属性即可获得,例如:
let ids = App.viewManager.viewIds;
for (let i = 0; i < ids.Count; i++) {
let viewId = ids.get_Item(i);
let view = App.viewManager.GetView(viewId);
console.log(` View ${i}: ID=${viewId} | Name=${view.name} | Type=${view.GetType().FullName}`);
}可获得结果:

View 0: ID=fairygui.LibraryView | Name=fairygui.LibraryView | Type=FairyEditor.View.LibraryView
View 1: ID=fairygui.InspectorView | Name=fairygui.InspectorView | Type=FairyEditor.View.InspectorView
View 2: ID=fairygui.HierarchyView | Name=fairygui.HierarchyView | Type=FairyEditor.View.HierarchyView
View 3: ID=fairygui.PreviewView | Name=fairygui.PreviewView | Type=FairyEditor.View.PreviewView
View 4: ID=fairygui.TimelineView | Name=fairygui.TimelineView | Type=FairyEditor.View.TimelineView
View 5: ID=fairygui.TransitionListView | Name=fairygui.TransitionListView | Type=FairyEditor.View.TransitionListView
View 6: ID=fairygui.FavoritesView | Name=fairygui.FavoritesView | Type=FairyEditor.View.FavoritesView
View 7: ID=fairygui.SearchView | Name=fairygui.SearchView | Type=FairyEditor.View.SearchView
View 8: ID=fairygui.ConsoleView | Name=fairygui.ConsoleView | Type=FairyEditor.View.ConsoleView
View 9: ID=fairygui.ReferenceView | Name=fairygui.ReferenceView | Type=FairyEditor.View.ReferenceView
View 10: ID=fairygui.PlugInView | Name=fairygui.PlugInView | Type=FairyEditor.View.PlugInView
View 11: ID=fairygui.DocumentView | Name=fairygui.DocumentView | Type=FairyEditor.View.DocumentView
View 12: ID=fairygui.TestView | Name=fairygui.TestView | Type=FairyEditor.View.TestView

可以看出,编辑器中的全部窗口应该都在这个列表里了。
其中,fairygui.PlugInView 就是要找的插件窗口了。此时就可以用类似的方法调用了:
let pluginViewRoot: CS.FairyGUI.GComponent = App.viewManager.GetView("fairygui.PlugInView").GetChildAt(0).asCom;
let reloadButton: CS.FairyGUI.GButton = pluginViewRoot.GetChild("reload").asButton;
reloadButton.onClick.Call();但想法是美好的,现实是骨感的。
触发reload之后应该会卸载插件环境,但是执行指令还在插件的代码中执行,这里就会出现生命周期冲突的问题。
表现的迹象就是编辑器卡死随后闪退。
因此在插件中想要reload插件似乎是不现实的。也难怪这部分内容没有直接公开在编辑器的API中。 查看全部
控制台在API中直接暴露出来可获取,相对来说简单一些:
let consoleViewRoot: CS.FairyGUI.GComponent = App.consoleView.GetChildAt(0).asCom;
let clearButton: CS.FairyGUI.GButton = consoleViewRoot.GetChild("btnClear").asButton;
clearButton.onClick.Call();
同时,通过这个途径,我们也可以获取控制台中的所有内容:
export function GetConsoleLines(): string[] {
/**
* ConsoleView的结构
* - ""(GComponenet)
* - "list"(GList)
* - "n12"(GGraph)
* - "btnCopy"(GButton)
* - "btnClear"(GButton)
* - "n9"(GGroup)
*/

let result: string[] = [];

let consoleViewRoot: CS.FairyGUI.GComponent = App.consoleView.GetChildAt(0).asCom;
let consoleList: CS.FairyGUI.GList = consoleViewRoot.GetChild("list").asList;

if (consoleList == null) {
console.warn("未找到Console列表");
return result;
}

console.log(`Console List Item Count: ${consoleList.numItems}`);
for (let i = 0; i < consoleList.numItems; i++) {
let item: CS.FairyGUI.GButton = consoleList.GetChildAt(i).asButton;
// console.log(`Console List Item ${i}: ${item.name} | ${item.GetType().FullName} | ${item.text}`);
result.push(item.text);
}

return result;
}

 
插件并没有类似于 App.pluginView 的东西可以直接访问,经过一些研究,我发现它被存储于 App.viewManager 之中。
 
App.viewManager 内部应该是有个列表来管理成员,通过遍历其 viewIds 属性即可获得,例如:
let ids = App.viewManager.viewIds;
for (let i = 0; i < ids.Count; i++) {
let viewId = ids.get_Item(i);
let view = App.viewManager.GetView(viewId);
console.log(` View ${i}: ID=${viewId} | Name=${view.name} | Type=${view.GetType().FullName}`);
}
可获得结果:


View 0: ID=fairygui.LibraryView | Name=fairygui.LibraryView | Type=FairyEditor.View.LibraryView
View 1: ID=fairygui.InspectorView | Name=fairygui.InspectorView | Type=FairyEditor.View.InspectorView
View 2: ID=fairygui.HierarchyView | Name=fairygui.HierarchyView | Type=FairyEditor.View.HierarchyView
View 3: ID=fairygui.PreviewView | Name=fairygui.PreviewView | Type=FairyEditor.View.PreviewView
View 4: ID=fairygui.TimelineView | Name=fairygui.TimelineView | Type=FairyEditor.View.TimelineView
View 5: ID=fairygui.TransitionListView | Name=fairygui.TransitionListView | Type=FairyEditor.View.TransitionListView
View 6: ID=fairygui.FavoritesView | Name=fairygui.FavoritesView | Type=FairyEditor.View.FavoritesView
View 7: ID=fairygui.SearchView | Name=fairygui.SearchView | Type=FairyEditor.View.SearchView
View 8: ID=fairygui.ConsoleView | Name=fairygui.ConsoleView | Type=FairyEditor.View.ConsoleView
View 9: ID=fairygui.ReferenceView | Name=fairygui.ReferenceView | Type=FairyEditor.View.ReferenceView
View 10: ID=fairygui.PlugInView | Name=fairygui.PlugInView | Type=FairyEditor.View.PlugInView
View 11: ID=fairygui.DocumentView | Name=fairygui.DocumentView | Type=FairyEditor.View.DocumentView
View 12: ID=fairygui.TestView | Name=fairygui.TestView | Type=FairyEditor.View.TestView


可以看出,编辑器中的全部窗口应该都在这个列表里了。
其中,fairygui.PlugInView 就是要找的插件窗口了。此时就可以用类似的方法调用了:
let pluginViewRoot: CS.FairyGUI.GComponent = App.viewManager.GetView("fairygui.PlugInView").GetChildAt(0).asCom;
let reloadButton: CS.FairyGUI.GButton = pluginViewRoot.GetChild("reload").asButton;
reloadButton.onClick.Call();
但想法是美好的,现实是骨感的。
触发reload之后应该会卸载插件环境,但是执行指令还在插件的代码中执行,这里就会出现生命周期冲突的问题。
表现的迹象就是编辑器卡死随后闪退。
因此在插件中想要reload插件似乎是不现实的。也难怪这部分内容没有直接公开在编辑器的API中。

这个被做成了组件的

回复

编辑器使用ahsiyn 回复了问题 • 1 人关注 • 1 个回复 • 55 次浏览 • 2025-12-16 19:06 • 来自相关话题

GLoader在被销毁时,没有调用FreeExternal

回复

UnityScottosong 发起了问题 • 1 人关注 • 0 个回复 • 49 次浏览 • 2025-12-15 15:06 • 来自相关话题

控制器的动作如何停止

CocosCreatorheartkey 回复了问题 • 3 人关注 • 2 个回复 • 169 次浏览 • 2025-12-15 14:19 • 来自相关话题

在fairygui里有没有像cocos creator中一样的预设体

CocosCreatorErin 回复了问题 • 3 人关注 • 2 个回复 • 253 次浏览 • 2025-12-15 14:19 • 来自相关话题

报一个文本的bug

回复

编辑器使用Alan 发起了问题 • 1 人关注 • 0 个回复 • 36 次浏览 • 2025-12-15 14:19 • 来自相关话题

插件ImportResource后,资源不会立刻显示在包内,需要重新打开工程才能出现

编辑器使用谷主 回复了问题 • 2 人关注 • 1 个回复 • 134 次浏览 • 2025-12-15 14:18 • 来自相关话题

FairyGUI 文本在 Laya 下投影功能失效

Laya谷主 回复了问题 • 2 人关注 • 1 个回复 • 67 次浏览 • 2025-12-15 10:13 • 来自相关话题

NTexture.CustomDestroyMethod 没有收到回调

回复

UnityScottosong 发起了问题 • 0 人关注 • 0 个回复 • 51 次浏览 • 2025-12-12 14:35 • 来自相关话题

【LayaAir3.3.3】GSlider无法点击选取以及拖拽

回复

Laya云端雷霆 回复了问题 • 1 人关注 • 1 个回复 • 67 次浏览 • 2025-12-06 21:53 • 来自相关话题

FairyGUI组件移动文件夹问题

编辑器使用misakacirno 回复了问题 • 2 人关注 • 1 个回复 • 77 次浏览 • 2025-12-04 13:26 • 来自相关话题

cc3.7.2,使用registerFont 注册字体,fairygui设置全局字体不生效?

CocosCreatorletYou 回复了问题 • 4 人关注 • 3 个回复 • 1046 次浏览 • 2025-11-28 17:20 • 来自相关话题

在FairyGUI里创建组件到鼠标位置

编辑器使用谷主 回复了问题 • 2 人关注 • 1 个回复 • 197 次浏览 • 2025-11-27 19:53 • 来自相关话题

unity里边TMP字体放在场景里边,改变缩放会导致字体显示异常

Unity谷主 回复了问题 • 2 人关注 • 2 个回复 • 158 次浏览 • 2025-11-27 19:53 • 来自相关话题

关于发布后纹理集问题

CocosCreator谷主 回复了问题 • 2 人关注 • 1 个回复 • 191 次浏览 • 2025-11-27 19:52 • 来自相关话题

编辑器插件如何添加新发布属性

编辑器使用谷主 回复了问题 • 2 人关注 • 1 个回复 • 181 次浏览 • 2025-11-27 19:51 • 来自相关话题