自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 UE4 GetLifetimeReplicatedProps 不用声明就能直接重写的原因

背景最近看UE4值复制那块,发现不少地方直接在cpp里就重写了GetLifetimeReplicatedProps,却没有在对应文件中去声明这个override.例如 LevelSequenceActor中原因谷歌了一圈也没有看见相关问答,于是自己尝试做了下测试,发现可能和GENERATED_BODY()宏有关遂继续翻源码,发现果然如此添加GENERATED_BODY宏以后,在代码生成时会检测当前头文件中是否有GetLifetimeReplicatedProps字段

2022-02-20 01:59:59 1864

原创 Lua 弱引用表 强引用表

上次面试碰到这个问题,大概了解了一下一般未做任何设置的全局表都是强引用表,比如  它会一直在内存中而如果对 table1设置元表里的mode字段 (设置为 "k","v","kv"之一),就会在没有外部引用的情况下被collectgarbage自动回收 注意__mode字段只要包含 "k" ,"v" "kv"这些字母的字段就会执行弱引

2018-02-03 16:52:24 1616

原创 Lua里面new一个对象详细步骤

实现代码 结果关键: 1.  __index 元方法 可以让classA在被其它表XX设置为元表时, XX被访问YY时如果XX里没有YY,但是XX有元表且元表有__index 就会继续访问元表里有没有YY关键: 2. new方法最后返回的是新创建的o,所以test_a, test_b最终访问的才不是同一个getA getB 而o又把classA设置为了元表,访问顺序

2018-02-03 11:36:34 13652 2

原创 LuaFrameWork 使用Dotween 报错解决 以LuaFrameWork1.0.7.388 Examples/12_GameObject/TestGameObject 为例

1.加入宏USING_DOTWEENING     此时如下代码就会解锁2.运行游戏后会调用如下lua代码3.DoMove的使用是正常的,但是dotween回调方法OnComplete会报错  信息如下4.说明TweenCallback委托没有注册  因此把DG.Tweening.TweenCallback

2018-01-31 14:51:29 1695

原创 u3d关于system.data每次在vs上重新加载都会丢失引用的问题

unity版本是5.2.0,在连接数据库时按照教程把unity里的system.data.dll导入工程并在vs里引用,但是发现每次在vs里重新加载都会丢失引用  网上找了半天完全没有答案... 解决方案 最终循着提示警告找到是unity里导入的system.data版本过高引起的(还能更坑爹?) 把C:\Program Files (x86)\Reference Asse

2015-12-02 22:18:32 1142

原创 3D常用英文术语

Critical 暴击Address family 网络类型Parse 解析(和pass 同音)Thresholds 阈值 (两种状态的临界值)Horizontal水平的Vertical 竖直的interactable 交互性(按钮的,设置为false 则按下无反应)Vector 向量Slope坡度Ik逆向动力学,从末推到初关节的运动情况,如手指的运

2015-08-27 11:07:48 1939

原创 U3D学习笔记(9)

1.u3d接入sdk相关 简单来说,”母包”就是 游戏代码 + AnySDK Framework;”渠道包”就是 游戏代码 + AnySDK Framework + 渠道SDK(包括代码+资源)。 manfest.xml可以配置许多个activity(对应一个个类)拿广告sdk来说,有闪屏activity,mainactivity等,貌似第一个定义的就是入口activity

2015-08-27 11:05:19 928

原创 U3D学习笔记(8)

1.自动排版的滚动条里要准确拖拽按钮,那么按钮的锚点必须左下角,即0,0(左下角那张图),用game .recttransform .anchor trans =Input .mousepos 来实现!但一定要脱离layerout 自动排版的束缚(把parent 暂时改成别的),否则无效2.Scorerect 的elastic(弹性) 模式下的elasticity 表示的是滑动多少

2015-08-27 10:51:56 811

原创 U3D学习笔记(7)

1.layermask 这样写mask .value =1 然后Raycast 里必须加上maxdistance 参数否则无效layermask 无效! 当碰撞到ui 层则返回(此时按钮点击仍然有效因为是另外一条射线处理canvas 层的响应),主要是为了不让ui层和别的层交互2.脚本Enable 为false 后里面写的ontriggerenter 等物理属性还会继续判断,只

2015-08-27 10:38:41 904

原创 U3D学习笔记(6)

1.射线会在和第一个物体碰撞后消失,但物体必须带碰撞collider 组件,比如说按钮带一个collider(注意按钮的刚体的xy 代表按钮的长宽,而不是3d 里的xz ,可在3d 界面查看按钮的collider 体积) ,就可以吞没下面的移动响应,但是此时要把convas 设置在camera 模式下(即3d 世界里,但是就在主相机前面,给人还是在镜头最前面的感觉)2.Ugui 按钮的

2015-08-27 10:26:17 676

原创 U3D学习笔记(5)

1.不能试图让场景里的按钮去回调预设体里的函数,因为不能保证预设体是否存在,也就无法保证预设体函数是否可用,但可以在预设体里加入按钮组件,这样确保了有按钮必有预设体。2.U3d 网络研究(Network ) 0.客户端只负责发送各种信息(移动,开启动画等),服务端接收到这些信息后真正移对玩家进行操作 1.服务器端必须先连接,然后客户端在通过那个唯一端口连接到这个服务器 2.

2015-08-27 10:16:51 925

原创 U3D学习笔记(4)

1.Vector3.dot 表示两个向量点乘,如果结果大于0,则夹角为锐角,反之为钝角。 当然最好用.normalize 初始化后,这样得出来的点乘值肯定在-1到1之间,相当于得出了cos 值,就可以精细的判断两个向量之间的角度了。 如 Vector3 toOther = enemy.transform.position - myTransform.position; do

2015-08-27 10:01:15 978

原创 U3D学习笔记(3)

1.可以为了播放一个子弹消失时的音效而再创建一个空对象,挂载一个音效组件,然后它会在实例化时立刻播放音效,再用destroy 延迟销毁2.粒子编辑器相关 一个例粒子的添加要有动画,渲染(可以不加,在粒子编辑器里已经有了),发射几种组件一起结合才能起效。 发射组件有两种,椭圆发射器和mesh发射器,后者更加精细 Simulate in worldspace是否粒子实时跟随人物

2015-08-27 09:36:08 741

原创 U3D学习笔记(2)

1.旋转相关 1.Quaternion.Euler和Quaternion.eulerAngles。它们基本可以满足绝大多数的四元数旋转变换 2.u3d 中 进行一次旋转时不一起旋转当前坐标系 ,如 transform.Rotate(new Vector3(60, 30, 20)); 称为一次旋转,它是绕自身坐标系旋转的,在这一次旋转完成前,它旋转所用的轴都是没有旋转时的自身的三

2015-08-26 17:14:08 806

原创 U3D学习笔记(1)

UE4太难了,所以过来学U3D感觉爽快多了!1.摄像机相关 1.天空盒组件:一般摄像机添加该组件,所有场景空白部分将填充你所选择的纹理。当然也有别的设置模式,clear flags里设置(注意:只是这台摄 像机有该天空盒效果(局部天空盒),切换成别的就没了,但可以在render setting中设置全局sky box) 可以理解成 2.摄像机视野大小在field of view

2015-08-26 17:02:20 919

原创 UE4 学习笔记

3月份学了一阵子UE4,这里做一下总结: 1.Ue4按空格键快速切换缩放,旋转,移动模式 2.Actor继承自aactor,可以看成是一个容器,用来装"组件"这个对象 3.根据Unreal的传统命名规则,所有直接或间接继承自Actor的类都以首字母A开头,所有直接继承自UObject类都以首字母U开头 4.把物体蓝图的碰撞属性设置成overlap重叠碰撞,然后碰撞判断使

2015-08-26 16:53:17 2174

原创 AS3学习(3)

大多数是公司库函数里的知识1.x = delayCall.addFunFrame(checkCanRun);帧调用checkcanRun,结果给xdelayCall.dltFun(x);在checkcanRun里停止Update函数x2.uiMaker.RefreshSLUI(MODULE_NAME, [ { key:"line1", text: downTxt } ]);

2015-08-26 16:33:51 477

原创 AS3相关(1)

公司在用as3,姑且学一下-7.在obj或者数组里的变量不需要声明类型,但要写上值,如obj:object={x:1,y:{z:2}},通过obj[y].z获取该数组y下表里面的z的值-6. as3二维数组:var btnCoatLocition :Array = [[-139.2,126.2],[-63,-121.9]];-5.object类型里可以放任何未定义的子objec

2015-08-26 16:31:01 507

原创 AS3 相关(2)

暑假在一家as3手游公司实习,这里记录一下学习笔记:(使用的公司库函数)1.x = delayCall.addFunFrame(checkCanRun);帧调用checkcanRun,结果给xdelayCall.dltFun(x);在checkcanRun里停止Update函数x2.uiMaker.RefreshSLUI(MODULE_NAME, [ { key:"line1", te

2015-08-26 16:26:22 463

原创 unity sdk 报错CommandInvokationFailure: Unable to convert classes into dex format解决方法

网上找了很多,大多说是重复包含,经过和别人的一对比:发现在eclipse上最后编译时,在bin\classes\...最后面的class文件里多出来一些R$开头的class文件,把它们删除再cmd成jar文件再放到打包成apk就正常了...

2015-07-11 14:30:58 7346

原创 关于Cocos2d-x的一些认识(5)

接上篇:1.不要头文件里声明了成员变量int a,却在cpp里初始化时加上了auto或者int a=...来初始化啊,否则这个a只是局部变量而不是成员a啊,直接a=...来初始化。2.把一个指针指赋值给另一个指针,那么两者所指的是同一块地址,所以对两者操作是等同的!但这两个指针自身的地址是不同的,所以log出来会不同3.同一时间不能让两个精灵执行同一个动作,同样的,也不能同一时间把一个

2015-02-13 14:21:56 552

原创 关于Cocos2d-x的一些认识(4)

接上篇:1.飘字效果的三个动作用sequence来组合,因为放大和缩小的执行只在一瞬间,然后它会根据设置动作持续时间来播放,但是执行只是一瞬间,所以要是用spawn来组合播放的话只会一下子闪过。2.create _func这个宏里 写了调用init函数,所以只要有creat func的类就一定会有init(),并且创建对象,场景等这些需要初始化(写init())的都要写createfu

2015-02-13 14:01:49 611

原创 关于Cocos2d-x的一些认识(3)

接上篇:1.sawn或者sequence的最后一个参数必须是null2.replacescene不会影响原来场景中的update函数的每帧判断,但能释放原场景,并且调用的一瞬间就会替换原场景,原场景立刻释放,不复存在,但原场景中update仍然会时刻判断和更新数据并做出响应,所以扣血仅仅写hp3.moveto完成想要点哪去哪,必须没次触摸开始时stopallcations否则位移会合成

2015-02-13 13:50:13 627

原创 关于Cocos2d-x的一些认识(2)

1.很大一张图,屏幕显示的是绝对坐标系下的屏幕设置大小。要想改变屏幕显示位置,通过改变图的初始坐标即可。如想显示右上角,则把初始坐标设  置为(-500,-800)即可。所谓的场景向前只不过是地图向后拖,即地图坐标一直往后(设置成负数)设置。而(触摸坐标)一直都在屏幕范围内,角  色坐标本来也是在屏幕范围内的,但是由于是地图的子节点,所以相对坐标很大。所以把角色坐标转换成层的世界坐标(而不是地

2015-02-13 13:32:28 494

原创 关于Cocos2d-x的一些认识(1)

这学期学习c++之余还抽空把cocos2d-x学习了一下,感觉真的是一款十分强大的游戏引擎,自己也最近发布了两款小游戏应用,下面总结一下自己对Cocos2d-x的一些认识和以前犯的一些错误:1.想要滚动背景无黑缝,那么背景图片像素必须是整数,可以被整除.2.button不能用是因为窗口分辨率设置太大了3.出现n显示无法打开.h或者.cpp是因为路径问题no such file or

2015-02-13 13:18:37 625

原创 关于c++的一些自我认识(4)

接上篇:1.10007这种数字就是超出整数范围,用它就代表不能直接计算,要把它化小,如先加后取余可能会超过范围,但是先取余后加就ok了,而且结果一样或者使用long long类型。2.如果不定义成虚函数,那么就只会进行静态联编,在编译时阶段完成,即无论子类父类指针会定死了指向基类同名函数,运行时无论如何都不会改变这个结果。如果设置为虚函数,则会智能判断指针到底指向的哪个同名函数,如果是

2015-02-13 13:13:47 553

原创 关于c++的一些自我认识(3)

接上面:1.C++中从函数中直接跳回到main主函数,即忽视函数中其它递归调用,函数中使用throw 主函数中使用try catch即可2.C语言有类型转换机制,在执行运算时,小于int的类型将会提升。换句话说,(这里)两个char类型相加,会自动转换成int类型运算,得到结果后再转换为char类型。这是隐式转换。所以char+char=数字;char+int=数字3.即便是基类的虚函

2015-02-13 13:03:47 484

原创 关于c++的一些自我认识(2)

接上篇:1.若写成for(int a=0; ;a++)则a的生命周期只在for循环内,若写成int a;for(a=0; ;a++)则可以在外部继续使用a2.  私有成员设置成指针和数组的区别:  指针只分配一个地址单元,用来存放地址。  数组分配n个单元,用来存具体的值。  所以你要是想把main中的一个数组的值初始化给私有成员,那么私有成员  1:定义成数组,  2

2015-02-13 12:52:25 523

原创 关于c++的一些自我认识(1)

今天突然心血来潮想写点博文复习一下刚刚学完的c++和以前犯的低级错误~用来勉励和敦促自己,以后犯错了也方便再回来看看:1.一步到位的字符串复制while((*str2++=*str1++)!='\0');2.条件判断中如whie(a&&b)&&或‖前面的要是不成立就不判断后面的了3.c++中,重载函数允许使用同一个函数名,但变量类型必须不同(或者变量个数不同,如f(a,b)和f

2015-02-13 12:42:39 515

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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