自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Maya 创建第一个Maya插件

1.插件代码import sysimport maya.OpenMaya as OpenMayaimport maya.OpenMayaMPx as OpenMayaMPxkPluginCmdName = "spHelloWorld"#commandclass scriptedCommand(OpenMayaMPx.MPxCommand):def _init_(self):OpenMayaMPx.MPxCommand._init_(self)#invoked when the co

2020-06-30 18:45:11 24

原创 Maya 批量写动画帧

我们知道,pymel 的setKeyFrame是可以设置关键帧,但是这种方式只能一个一个的设置,如何我们有一个数据,需要导入上千上万帧,这个速度就非常的慢,慢到完全不能使用。其实在Maya 原生Python 和 C++ 库提供了一个批量导入关键帧的方式。它就是来自OpenMayaAnim.MFnAnimCurve里面的addKeys 方法。这个方法能够为节点的一个属性批量写帧,速读很快。导入节点的transform属性,自定义扩展属性相同defAddKeysForNode(att,no...

2020-06-30 18:39:23 27

原创 Maya 预定义的事件,可以通过scriptJob实现监听

[u'dbTraceChanged', u'resourceLimitStateChange', u'linearUnitChanged', u'timeUnitChanged', u'angularUnitChanged', u'Undo',u'undoSupressed', u'Redo', u'customEvaluatorChanged', u'serialExecutorFallback', u'timeChanged', u'currentContainerChange',u'quitApp

2020-06-30 18:36:41 20

原创 Python 多线程处理事务

可以使用threading 这个Module来使用多线程importthreadingthreading.Thread(target=self.startDownload,args=[downloadList]).start()这样就使用另一个线程执行startDownload 函数,args里面就是函数的参数使用线程,大部分会操作到共享数据的部分,这时候就需要用锁机制来保证共享数据的安全性:需要在能够都访问的地方申明一个锁self.downloadLock = threading.Lo.

2020-06-30 18:34:38 22

原创 Python 简单下载文件

import shutilimport urllibdef internal_downloadFile(self,sourceFile,dstFile): dirPath = os.path.dirname(dstFile) if not os.path.exists(dirPath): os.makedirs(dirPath) if sourceFile.startswith('//'): shutil.copyfile(sourceFi.

2020-06-30 18:32:52 18

原创 Python 普通类型转换

1.str 与bytes转换 # bytes object b = b"example" # str object s = "example" # str to bytes bytes(s, encoding = "utf8") # bytes to str str(b, encoding = "utf-8") # an alternativ...

2020-06-30 18:27:53 9

原创 U3D 实现UGUI循环列表

在项目开发中,列表滚动是很常用的功能,比如展示玩家排名,聊天信息等。这里我们实现一个循环列表功能。首先我们创建个ScrollRect,移除掉Content里面的布局组件。如下然后在List_View上放上如下代码LoopListViewer.cs:/* * Created By Zhaotao On 2019-3-22 * Desc:循环列表 */usi...

2020-06-30 18:27:30 13

原创 U3D Layout 添加嵌套的自动大小的文本

在UGUI的开发中,我们有个滚动区域,但是滚动区域的Content添加一个V Layout Group 这个组件,方便自动布局。但是里面的内容是动态高度,比如文本框,文本内容不同,高度也不同。所以文本也添加一个Content Size Fitter这个组件。但是这样就存在一个问题,当文本框动态添加到Content 下面的时候,由于Text的高度没有及时计算出来,导致滚动区域高度和文本重叠的现象。这...

2020-06-30 18:26:15 10

原创 U3D UGUI上粒子特效穿插层级 问题解决

在使用Unity3d的UGUI开发的时候,经常会使用到粒子系统。但是粒子系统有一套自己的渲染层级,导致我们在UGUI中穿插使用的时候特别鸡肋。在网上查阅了很多开发者的方案,大部分是使用Canvas分割层级实现穿插的效果,但是使用Canvas就不能保证我们制作UI上那种顺序合理的节点层级结果。还有少部分的人使用渲染到纹理的方式来添加,这种相机销毁成本过高。这里实现一个不改变UI节点层级结构,...

2020-06-30 18:25:31 11

原创 多边形三角化,无内岛多边形(拆耳法)

PS.代码使用的Unity3d的库,主要是实现思想。思想:1.多边形的点以顺时针统计(顺时,逆时关系不大,这里统一这个标准,方便判断正负)2.把凸顶点放在一个List中 如何判断一个点是不是凸点,如目标的t,左点为P1,又点为P2 ,向量pt1 = P1 - t,pt2 = P2 - t,然后pt1 与 pt2 做叉积,判断z 的正负就知道是不是凹凸3.把凹点放在一个Li...

2020-06-30 18:24:41 16

原创 U3d 代码修改图片的尺寸

同个代码修改图片尺寸。代码如下:public static Texture2D CreateResizeTexture(Texture2D tex, int width, int height, TextureFormat format, bool isMipmap) { if (tex == null) { ...

2020-06-30 18:24:09 23

原创 Lua rawset和rawget的用法

rawset 和rawget 操作非元表里面的值,所以想获取或设置不是元表里面的值时候使用。local a = {b = 1,c = 2}local e = {f = 3,g = 4}setmetatable(a,e)e.__index = function(t,key) return rawget(t,key)ende.__newindex = function(t,k,...

2020-06-30 18:23:47 12

原创 Lua 实现字符串的分割

在开发过程中,经常会用到字符串分割,如C#中的string.Split函数,把一个字符串按某个子字符串分割成一个字符串数组。基本思想:使用Lua自带的string.gmatch()函数实现,此函数可以对一个字符串做正则表达式匹配,返回一个迭代器。-- 分割字符串---@param str string 元字符串---@param seq string 分割字符---@retur...

2020-06-30 18:23:00 10

原创 U3d 资源断点下载

直接附上代码,比较易懂:/* * Created By Zhaotao On 2019-4-08 * Desc:文件斷點下載 */using System.Threading;using System.IO;using System.Net;using System;/// /// 通过http下载资源/// public class HttpDownLoad{...

2020-06-30 18:21:38 13

原创 U3D 图像截屏

public static Texture2D CaptureScreen() { return CaptureScreen(new Rect(0f, 0f, (float)Screen.width, (float)Screen.height)); } public static Texture2D CaptureScr...

2020-06-30 18:20:12 10

原创 Lua 设置只读table

在开发过程中,比如配置,服务器下发的数据,这些数据我们不做修改。怎么防止别人的误修改呢。我们可以设置__newindex 元方法来实现:--把table 变成readobly---@param t table 对象function Common.TableReadOnly(t) if t == nil or type(t) ~= "table" then retu...

2020-06-30 18:16:33 7

原创 QT 主窗口大小改变,子窗口大小不能跟随变化

开始使用QT,在MainWindow中动态添加一个Widget的子窗口,想主窗口大小改变的时候,比如最大化。结果子窗口的大小不能改变。从网上查询资料,说主窗口需要重载protected: virtual void resizeEvent(QResizeEvent *event) override;然后我乖乖的重载了这个方法。在这个方法里动态调用子窗口的void Select...

2020-06-30 18:15:47 3

原创 Unity 打AssetBundle资源关联问题

我们在使用buildMap[0].assetBundleName = "test/ssss.ab";buildMap[0].assetNames = item.Value.ToArray();BuildPipeline.BuildAssetBundles(SavePath, buildMap, BuildAssetBundleOptions.Collec...

2020-06-30 18:15:07 8

原创 U3d 声音播放

在u3d 中,对于声音的播放,又2个重要的类,AudioSource,AudioClipAudioSource相当于一个播放器组件,里面需要一个AudioClip,就能播放声音了。它包含对声音大小的控制,播放时间的控制,停止,暂停等等。AudioClip相当于声音资源,通过一个资源路径,可以创建一个AudioClip,然后赋值给AudioSource,就能通过AudioSour...

2020-06-30 18:14:34 7

原创 U3d HttpWebRequest提示Not Found

这是一个坑。在开发中,碰见一个URL死活打不开,把这个URL链接打印出来,复制粘贴到浏览器也是不能打开。在浏览器重新输入这个字符串链接是能够正常打开的。这个URL链接是怎么来的,解析字符串拼接出来的URL。开始怀疑是有不对的字符,同个把正常链接和有问题的链接拷贝到文本编辑器做对比,字符个数,结尾空格都是正常的,感觉很是奇怪。最好把有问题的字符从输出窗口的打印复制粘贴到JetBrai...

2020-06-30 18:14:05 13

原创 U3d 属性面板自定义扩展(多态数组)

原文地址:https://blog.csdn.net/qq_35361471/article/details/84715491原文地址:https://blog.csdn.net/tom_221x/article/details/79437561序列化相关问题:https://blog.uwa4d.com/archives/2025.html一直想研究,怎么使用 ScriptableO...

2020-06-30 18:13:37 2

原创 Python 安装启动一个简易的WebSocket

1.Python的WebSocket库安装库介绍地址:https://websockets.readthedocs.io/en/stable/intro.html使用pip工具安装,pip.exe是Python自带的Python库安装工具(最新版本一般都要),一般存在于Python安装目录的Scripts目录下,可以直接在Pythona安装目录收索获得,为了方便,可以为pip的目录添...

2020-06-30 18:12:18 11

原创 Jenkins 使用版本号插件

1.插件安装主页>系统管理>插件管理>可选插件 直接收索(Version Number)由于我已经安装了,所以看不见,没有安装的可以看见这里有这个插件,点击直接安装。2.项目配置a.进入任意一个项目配置界面Environment Variable Name:自己区的一个变量名字,方便后面要使用的地方使用Version Number Form...

2020-06-30 18:11:50 4

原创 Jenkins 配置打包完成邮件通知

使用Jenkins做自动打包的时候,可以配置打包完后或者打包错误给指定人发邮件通知。1.系统设置主页>系统管理>系统设置a.Jenins location设置好管理员邮箱地址。b.使用了Extended E-amilNotification插件设置网易企业SMTP Server: smtp.qiye.163.com网易SMTP Server: ...

2020-06-30 18:11:40 40

原创 U3d 资源做热更新

我这里实现了3个文件来处理热更新:Logo.cs 游戏的启动文件,里面处理下载存放资源路径的初始化。下载列表检查,下载,进入游戏DownLoader.cs U3d的一个组件,里面包含具体的下载线程,用来处理开启多线程下载HttpDownLoad.cs 具体的文件下载类,线程运行下载,支持断点下载/* Logo.cs * Created By Zhaotao On 2019...

2020-06-30 18:11:25 12

原创 Lua 十进制到任意进制的转换

此方法位数学计算方法,可能效率不是最好,但可以提供一个计算思想。这里实现2-16进制的转换,此思想可以扩展到任意进制。数学思想:比如给给定一个十进制数字 20,我们要转成8进制,我们就反复除以8,把结果取证,如果大于8,对结果继续除,每次的余数按顺序排列下来。最好结果就是 结果|余数|余数|余数....。20 / 8 = 2 余数 4,2 不大于等于8,停止运算,转换成的8进制就是:...

2020-06-30 18:10:28 4

原创 jenkins 怎么关闭与重启

我们通过jar -jar jenkins.war来启动jenkins服务器,那么我们如何关闭或者重启jenkins服务器呢?关闭Jenkins只需要在访问jenkins服务器的网址url地址后加上exit。例如我jenkins的地址http://localhost:8080/,那么我只需要在浏览器地址栏上敲下http://localhost:8080/exit网址就能关闭jenkins服...

2020-06-30 18:10:04 13

原创 JenKins Windows搭建JebKins自动打包

1.第一步#下载jenKins :https://jenkins.io/zh/我直接下载的.msi安装文件,直接根据安装向导安装即可。安装完后在浏览器打开:http://localhost:8080/,开始可能要等待一会,会弹出配置信息。根据向导配置即可。2.添加打包工程直接选择 新建 会出现上面的界面,取个好记的名字,选择第一个(构建一个自由风格的软件项目),确定,...

2020-06-30 18:09:51 8

原创 U3d 命令方式打APK

这里介绍一下怎么同个gradle命令打U3d Apk包。U3d 有2种方式打包。第一种:直接用过U3d 出APK包,对于前期demo开发测试可以,在后期的使用中,一般要有Android自己的工程项目,因为里面要添加第三方的SDK相关的东西。第二种方式就是导出一个Android Studio工程。怎么通过Unity导出Android工程的界面操作版本可以查看:https://blog.csd...

2020-06-30 18:09:29 11

原创 U3d WebGL使用ToLua

首先我们在编辑器模式下加入Tolua插件,然后配置修改到在编辑器模式下能够正常的运行。同个U3d 插件Build出WebGL的工程,运行的时候你会发现(有些需要把这个WebGL工程放在一个HttpServer下面,直接本地访问index.html会被拒绝,让你使用http的格式)。当要加载完的时候会出现To use dlopen, you need to use Emscripten'...

2020-06-30 18:07:48 13

原创 Qt 写Excl文件

参考资料:https://blog.csdn.net/czyt1988/article/details/52121360 https://blog.csdn.net/qq_35057840/article/details/54318443https://www.cnblogs.com/techiel/p/7932329.html然后自...

2020-06-30 18:05:39 12

原创 Qt 读写xml文件

写xml 文件:QDomDocument xml; QString strHeader( "version=\"1.0\" encoding=\"UTF-8\"" ); xml.appendChild( xml.createProcessingInstruction("xml", strHeader) ); QDomElement contentElement =...

2020-06-30 18:03:42 7

原创 Qt 写文件

使用QFile 写文件:QFile f(pFileName); if(!f.open(QIODevice::WriteOnly|QIODevice::Text)) { QMessageBox::warning(this,"file write","can't open",QMessageBox::Yes); ...

2020-06-30 18:03:21 12

原创 Qt 文件路径操作

//mSaveName = "C:/aaaa/fff.txt"; auto info = QFileInfo(mSaveName); QString pathName = info.absolutePath();// "C:/aaaa" QString baseName = info.baseName(); //"fff" QString fileName = info.fileName(...

2020-06-30 18:02:26 13

原创 Qt 绘图(Widget与QImage)

在Qt 中,可以用 QPainter 来绘制图形1.在Widget 上面绘制这个必须重载void paintEvent(QPaintEvent *event) 方法:void ViewWidget::paintEvent(QPaintEvent *event){ QPainter pen(this); //绘制图片 QImage image("xxxx/3207.png...

2020-06-30 18:02:11 9

原创 Qt 滚动区域的用法

我给一个widget添加一个滚动区域:QScrollArea *s = new QScrollArea(ui->centralWidget); s->setGeometry(600, 0, 600, 620); s->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); //垂直滚动条不可见,只能通...

2020-06-30 18:01:34 5

原创 Qt 窗口接收拖动进来的文件路径

在桌面应该的开发中,经常会碰见拖动文件进入窗口来添加文件的方法。在Qt中实现相当简单。在要接收拖动文件的widget类中,重载2个虚函数:protected: void dragEnterEvent(QDragEnterEvent *event); virtual void dropEvent(QDropEvent *event);void ViewWidget::dragEnte...

2020-06-30 18:00:59 21

原创 Qt ui文件的用法

通过工程创建向导,我们创建一个简单的工程,包含一个ui文本。我们创建一个helloworld 的文件,包含一个helloworld.ui文件这是工具自动生成出来的,创建出来的时候ui_helloworld.h还没有生成,需要运行的时候它会根据helloworld.ui生成出来。我们可以查看这个文件:class Ui_HelloWorld{public: QMenuBar *menuBa...

2020-06-30 18:00:45 11

原创 Qt 开放环境的安装

这里是使用Qt creator开放环境的安装。下载地址:http://download.qt.io/这上面可以找打不同的版本。我下载了官方最新版本,最大最全的那个。里面包含了Qt库和Qt creator工具。安装的时候把编译工具选择起。我选择的WinGW ,因为在里面是最全的,包含了编译工具,调试工具。MSVC工具可能需要自己下载调试工具。...

2020-06-30 18:00:26 16

原创 U3d 多线程运用

启动一个线程还是很简单的。 thread = new Thread(delegate(){ //do something});thread.IsBackground = true;thread.Start();如果线程函数里面有While循环,不会退出的话,记得在游戏退出或节点销毁的时候手动控制关闭这个线程或退出这个循环。可以自己定义一个状态变量判断。如果多线...

2020-06-30 17:59:51 2

提示
确定要删除当前文章?
取消 删除