cocos2D插件转3D插件

这篇具有很好参考价值的文章主要介绍了cocos2D插件转3D插件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

cocos2D插件转3D插件文章来源地址https://www.toymoban.com/news/detail-602837.html

'use strict';

/**

 * 3d插件api映射,兼容2d插件

 * */



let fs = require("fs");

let path = require("path");

let baseDir = '';

const prsPath = (Editor.Project && Editor.Project.path ? Editor.Project.path : Editor.remote.projectPath).replace(/\\/g,'/');



// 2D 映射到 3D编辑器的命令

let MAP_CMD = {

    'scene:enter-prefab-edit-mode'  :'scene:open-scene',

    'scene:open-by-uuid'            :'scene:open-scene',

    'assets:hint'                   : "twinkle", // 3d里高亮资源命令是 ‘twinkle’

    'hint'                          : "hint"           // 高亮选中的节点,未找到映射关系

}



// 模拟creator2d插件的API实现

let Editor2D =

{

    isWin32 : path.sep == '\\',

    appPath : Editor.App.path,

   

    error : console.error,

    log : console.log,

    warn : console.warn,

    info : console.info,

   

    _getUrlLast(url_path,head){

        let p_i = url_path.indexOf(head);

        if(p_i!=-1){

            return url_path.substr(head.length+2);

        }

    },



    url(url_path){

        let absPath = Editor._getUrlLast(url_path,'packages:');

        if(absPath){

            return path.join(baseDir,absPath)

        }



        absPath = Editor._getUrlLast(url_path,'db:');

        if(absPath ) {

            return path.join(prsPath,absPath)

        }

        return url_path;

    },



    require(url){

        url = Editor2D.url(url);

        return require(url);

    },



    Ipc : {



        sendToPanel: (head,cmd,...args)=>Editor2D.Ipc._send(head,cmd,...args),



        sendToAll:(cmd,...args)=>Editor2D.Ipc.sendToMain(cmd,...args),



        sendToMain:(cmd,...args)=>

        {

            cmd = MAP_CMD[cmd] || cmd;

            let temp = cmd.split(':')

            if(temp[1]){

                Editor2D.Ipc._send(temp[0],temp[1] || "",...args);

            }else{

                Editor.Message.send(cmd,...args);

            }

        },



        _send(head,cmd,...args)

        {

            let callback = arguments[arguments.length-1]

            Editor.Message.request(head,cmd,...args).then((v)=>{

                if(typeof callback == 'function'){

                    callback(null,v);

                    callback = null;

                }

            },()=>{

                if(typeof callback == 'function'){

                    callback('run _send error');

                    callback = null;

                }

            })

        }

    },



    Scene :{

        callSceneScript:(head,cmd,...args)=>{

            let info = {

                name: 'scene',

                method: cmd,

                args:args,

            }

            let callback = arguments[arguments.length-1]

            Editor2D.Ipc._send('scene','execute-scene-script',info,(callback instanceof Function) ? callback : null);

        },

    },

   

    assetdb:{

        assetBackupPath : path.join(prsPath,'temp','BackupAssets'),



        async urlToUuid(url){

            return await Editor.Message.request("asset-db",'query-uuid',url);

        },



        async uuidToUrl(uuid){

            return await Editor.Message.request("asset-db",'query-url',uuid);

        },



        async urlToFspath(uuidOrUrl){

            return await Editor.Message.request("asset-db",'query-path',uuidOrUrl);

        },



        async uuidToFspath(uuidOrUrl){

            return await Editor.Message.request("asset-db",'query-path',uuidOrUrl);

        },



        async fspathToUuid(fsPath){

            let url = "db://" + fsPath.replace(/\\/g,'/').replace(prsPath,'').substr(6);

            return await Editor.Message.request("asset-db",'query-uuid',url);

        },



        async existsByUuid(urlOrUUID){

            return await Editor.Message.request("asset-db",'query-asset-info',urlOrUUID);

        },

       

        async existsByUrl(urlOrUUID){

            return await Editor.Message.request("asset-db",'query-asset-info',urlOrUUID);

        },



        async assetInfoByUuid(urlOrUUID){

            return await Editor.Message.request("asset-db",'query-asset-info',urlOrUUID); // 注意3d返回字段与2d不太一样!

        },



        async assetInfoByUrl(urlOrUUID){

            return await Editor.Message.request("asset-db",'query-asset-info',urlOrUUID); // 注意3d返回字段与2d不太一样!

        },



        deepQuery(callback){

            if(!callback){

                return

            }

            Editor.Message.request("asset-db",'query-assets',{pattern:"db://**"}).then((list)=>{

                // 注意3d返回字段与2d不太一样!

                callback(null,list)

            },()=>{

                callback("run deepQuery error")

            });

        },



        queryInfoByUrl(...args){Editor2D.assetdb.queryInfoByUuid(...args)},

        queryInfoByUuid(urlOrUUID,callback){

            Editor.Message.request("asset-db",'query-asset-info',urlOrUUID).then((list)=>{

                // 注意3d返回字段与2d不太一样!

                callback(null,list)

            },()=>{

                callback("run queryInfoByUuid error")

            });

        },




        saveExists(url,text,callback){

            let promise = Editor.Message.request("asset-db",'save-asset',url,text).then(()=>{

                if(callback) callback()

            },()=>{

                if(callback) callback('save error')

            });

        },



        create(url,text,callback){

            let promise = Editor.Message.request("asset-db",'create-asset',url,text,{}).then((info)=>{

                if(callback) callback(null,info)

            },()=>{

                if(callback) callback('save error')

            });

        },



        delete(urls){

            for (let i = 0; i < urls.length; i++) {

                const url = urls[i];

                Editor.Message.request("asset-db",'delete-asset',url)

            }

        },

       

        move(source,target){

            Editor.Message.request("asset-db",'move-asset',source,target)

        },

    },



   

    Selection:{

        curGlobalActivate(){

            let type = Editor.Selection.getLastSelectedType();

            let ids = Editor.Selection.getSelected(type);

            return {type,id:ids[0]};

        },



        curSelection(type){

            return Editor.Selection.getSelected(type);

        },

    }

}



module.exports.analogApi = ()=>

{

    let packageRoot = __dirname.replace(/\\/g,'/')

    packageRoot = packageRoot.substr(0,packageRoot.lastIndexOf('simple-code/')-1)

    baseDir = packageRoot;



    // 插入api

    let copyFunc = (s_obj,t_obj)=>

    {

        for (const key in s_obj)

        {

            const v = s_obj[key];

            if(t_obj[key] == null){

                t_obj[key] = v;

            }else if(t_obj[key] instanceof Object){

                copyFunc(v,t_obj[key]);

            }

        }

    }



    copyFunc(Editor2D,Editor);

}

到了这里,关于cocos2D插件转3D插件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • cocos2d-x C++与Lua交互

    Cocos版本: 3.10 Lua版本: 5.1.4 环境: window Visual Studio 2013 Lua 作为一种脚本语言, 它的运行需要有 宿主 的存在,通过 Lua虚拟栈 进行数据交互。 它的底层实现是 C 语言,C语言封装了很多的API接口,使得C/C++与Lua之间可以很方便的通信交互。 Lua的官网: https://www.lua.org/ 在coc

    2024年02月08日
    浏览(45)
  • cocos2d-x Android原生平台与Lua交互

    版本: cocos2d-x 语言: C++/Java/Lua cocos2d-x原生平台Android 接入第三方SDK, 需要了解 LuaJavaBridge 的使用。 它封装了用于 Java 和 Lua 的相互调用, 其调用通过 C++ 为中介,简要的流程: Lua调用Java: Lua - C++ - Java Java调用Lua: Java - C++ - Lua 以此方式来实现数据的交互, 接下来我们分别说下

    2024年02月08日
    浏览(48)
  • cocos2d-x 3.17 推箱子 0.1

    此版本为推箱子游戏的基础版本, 后续添加如下功能 人物动画 TiledMap 解析 射线碰撞检测 下一步提示, C++算法解析 道具, 可以回退一步 通过 cocos 命令新建一个项目, 将本项目的 Reources 目录和 Classes 目录复制过去即可 使用图集绘制 Sprite , 然后手动处理碰撞检测 游戏学论著翻译

    2024年02月08日
    浏览(48)
  • 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码

    前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目。 在Cocos2d-x被整合到Cocos引擎之前,我们可以不那么方便地在我们创建的工程里调试Cocos2d-x的代码,当我们使用了整合后的Cocos引擎,调试

    2024年02月12日
    浏览(57)
  • win10 vs2022 搭建 cocos2d-x 3.17 开发环境

    https://cocos2d-x.org/download/ 也可以在 github 下载 https://github.com/cocos2d/cocos2d-x/tags https://docs.cocos2d-x.org/cocos2d-x/v3/zh/ https://docs.cocos2d-x.org/api-ref/cplusplus/v3x/index.html 需要 python2 , 安装后可以用 python2 的绝对路径运行 cocos 的 setup.py 如何没有把 python2 加入到环境变量, 可以修改引擎路径下

    2024年02月08日
    浏览(45)
  • 如何将cocos2d-x js打包部署到ios上 Mac M1系统

    项目环境 cocos2d-x 3.13 xcode 12 mac m1 big sur 先找到你的项目 使用xcode软件打开上面这个文件 打开后应该是这个样子 执行编译运行就好了 可能会碰到的错误 在xcode11版本以上都会有这个错误,这是因为iOS11+废弃了system。 将上面代码修改为 解决方案地址 remove \\\"system\\\" usage by minggo ·

    2024年02月22日
    浏览(49)
  • cocos2dx ​​Animate3D(二)

    扭曲旋转特效 源码 示例 瓷砖晃动特效 源码 示例 破碎的3D瓷砖特效 源码 示例 瓷砖洗牌特效 源码 示例 FadeOutTRTiles :淡出效果,从左下角到右上角 FadeOutBLTiles :淡出效果,从右上角到左下角 FadeOutUpTiles :折叠效果,从下到上 FadeOutDownTiles :折叠效果,从上到下 示例 方块消

    2024年02月05日
    浏览(38)
  • 【100个Cocos实例】实现和平精英中3D模型渲染到2D界面的模型展示效果

    3D模型渲染到2D界面的模型展示效果 在 游戏开发 中常常需要在 UI界面 上 显示 一个 3D模型 ,例如 时装界面 里 人物换装 展示、 Boss挑战界面 里 选择Boss 展示等等。 本文将介绍一下在 Cocos 游戏开发中实现 和平精英 中 3D模型渲染到2D界面 的模型展示效果。 本文源工程在文末

    2024年02月05日
    浏览(38)
  • cocos2dx学习之UIListView.h

    /**************************************************************************** Copyright (c) 2013-2017 Chukong Technologies Inc. http://www.cocos2d-x.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \\\"Software\\\"), to deal in the Software without restriction, including witho

    2024年02月11日
    浏览(39)
  • cocos2dx学习之UIListView.cpp

    /**************************************************************************** Copyright (c) 2013-2017 Chukong Technologies Inc. http://www.cocos2d-x.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \\\"Software\\\"), to deal in the Software without restriction, including witho

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包