那你是不是因为会web前端才这样说,如果哪一天插件需要后端,那你咋办,再学后端?插件本来就是个辅助工具,主要还是为了辅助游戏业务,这上面要做插件要绕弯是不是曲线救国曲的太严重了。
html、css、js 这东西比学任何一门语言都烦,,
我也更喜欢Unity插件的方式,它让我感觉就是常用的游戏开发的东西不用去学习更多的东西
using UnityEngine;
using UnityEditor;
using System.IO;
public class MyUnityPlugin : EditorWindow
{
// 配置文件保存路径
private static readonly string configFilePath = "Assets/Editor/MyPluginConfig.json";
// 配置数据类
[System.Serializable]
public class PluginConfig
{
public string userText = "Default Text";
public int sliderValue = 5;
public bool toggleOption = false;
}
private PluginConfig config;
// 添加菜单选项打开窗口
[MenuItem("Tools/My Unity Plugin")]
public static void ShowWindow()
{
GetWindow<MyUnityPlugin>("My Unity Plugin");
}
private void OnEnable()
{
LoadConfig();
}
private void OnGUI()
{
GUILayout.Label("My Unity Plugin", EditorStyles.boldLabel);
// 显示和编辑配置数据
config.userText = EditorGUILayout.TextField("User Text:", config.userText);
config.sliderValue = EditorGUILayout.IntSlider("Slider Value:", config.sliderValue, 1, 10);
config.toggleOption = EditorGUILayout.Toggle("Enable Option:", config.toggleOption);
GUILayout.Space(10);
// 保存配置
if (GUILayout.Button("Save Config"))
{
SaveConfig();
Debug.Log("Configuration saved!");
}
// 运行自定义逻辑
if (GUILayout.Button("Run Action"))
{
RunCustomAction();
}
}
private void RunCustomAction()
{
if (config.toggleOption)
{
Debug.Log($"Custom Action: {config.userText} (Slider: {config.sliderValue})");
}
else
{
Debug.LogWarning("Toggle option is disabled. Action not executed.");
}
}
private void LoadConfig()
{
if (File.Exists(configFilePath))
{
string json = File.ReadAllText(configFilePath);
config = JsonUtility.FromJson<PluginConfig>(json);
}
else
{
config = new PluginConfig(); // 默认配置
}
}
private void SaveConfig()
{
string json = JsonUtility.ToJson(config, true);
File.WriteAllText(configFilePath, json);
}
}
我不会啊别写别学的不然我用ai干嘛!
说到点上了,插件或其它大模块的上限,是由顶级架构师那个位置的人的个人能力决定的,没错,是个人能力,他决定的方向和实现思路,就决定了实际使用时效果怎么样。
跟 Cocos Dashboard 一样,开发者用得爽不爽他自己不知道吗,,
现在做一个地编,真的费老鼻子劲儿了。 


。。。
哈哈哈被你逮住了
笑了,头次见到怼开发者都受不了的,,
插件开发要学习css,html,vue等等,这样繁杂的学习曲线劝退多少人来拓展cocos,商店上面一堆卖游戏源码和框架的,鲜有辅助和方便开发的插件类的,不是没有原因的。作为引擎开发者还觉得这是理所应当的,对你们能提供方便易用的产品不抱什么希望了。
本来想给大家做顿大餐,结果端上来的是一坨屎,那只能出个食谱,来大家这样吃会更香点。
我猜测是两拨人分别开发引擎和编辑器导致了这种割裂。引擎和编辑器的连接是屏蔽的,想连通就需要通过插件来搭桥。
我也猜一下,是两种不同技术栈的人分别开发的编辑器和引擎,一个是web前端技术,一个是游戏开发。
因为游戏开发技术在制作编辑器的时候,一般都会想到用游戏引擎内部的控件来做编辑器,不仅仅是Unity,早在以前OGRE之类3D库流行的时候,都主要是这个思路。这样插件就可以简单的用游戏内接口开发了,而编辑器也天然就随着引擎跨平台了。而web开发的思路才是利用web框架electron之类的来开发编辑器。
然后技术人员和实际的用户就割裂了。因为技术栈不同,各自认为的基础和方向都不同了,所以引擎组人员认为用vue,react之类的都很简单,而游戏开发人员都是c++/opengl/c#/unity过来的,就觉得自己还要为了这个插件的小小需求去学web开发,什么html/css的不懂,学了用不到也会忘记。就造成了功能与需求不匹配的情况。
关键还很自得的样子,从来不考虑开发人员的感受,我会一点 vue 都不想用这种模式开发,,
api不透明不开放,有些甚至已经开放了,但是外面看不到,只针对引擎内部使用,如果你想实现稍微复杂一些的功能,你必须破解编辑器源码,然后一点点调试的找到你想要那个api,大部分api实际上都可以在自己插件中使用,只不过官方没有对应文档,可能认为开发者用不到吧,,或者开发者用了这些方法之后会对编辑器功能有破坏的风险吗?一直感觉插件系统上限不高,简单的插件实现没啥问题,如果你想象力丰富一些,你就需要各种特殊手段,或者拦截electron的消息转发等技巧来实现
Editor.Message.addBroadcastListener 在游戏脚本中能不能用?
如果不能用:为什么 Editor.Message.request 可以用
如果能用:有没有文档说明怎么用,比如想监听assets/data目录下的文件内容变更,要怎么注册监听事件
@weihai.yuan @啾啾啾
CocosCoreator插件开发借力web其实还是很好的,有很多漂亮的UI库可以拿来用,大家关心的无非是不会写html+css这一套,要从新学(会写也不爱写,没有可视化浑身难受)。
所以下一步的关键是实现插件的低代码开发,可视化 + 漂亮的UI丰富的组件 + JS/TS。
2.x好用。3.x的插件有点头疼。
2.x都能破解自定义。3.x无语
2.x写了很多插件,3.x直接懒得写了。
我觉得web应该作为扩展, 应该先提供单纯跟ccc差不多方式开发, 例如直接开发一个场景当作插件界面也挺好的, 用起来跟ccc差不多的感受, 各种api都是相同的, 这样他们用ccc的话,自然也不会排斥开发插件了