- 博客(45)
- 收藏
- 关注
原创 CMakeLists的构建
例如,我们设置了输出文件名为my_executable,输出目录为bin,在编译时开启了所有的警告信息,并指定了额外的库搜索路径。:用于向编译器添加预定义的宏定义,通过使用add_definitions命令,您可以在构建过程中定义一些全局的宏,这些宏将在所有源文件中可见。该命令会将指定的路径添加到编译器的头文件搜索路径中。:如果设置为 ON,则在构建过程中自动将当前处理的 CMakeLists.txt 所在的目录添加到包含路径中。:构建目录的根路径,即构建生成的可执行文件、库和其他构建输出的存放位置。
2023-08-27 20:53:22 200
原创 Linux Centos7安装vscode编译C/C++
1.下载vscodewget https://vscode.cdn.azure.cn/stable/0f3794b38477eea13fb47fbe15a42798e6129338/code-1.36.0-1562161214.el7.x86_64.rpm可以在官网上找自己想要的版本2.安装sudo yum install code-1.36.0-1562161214.el7.x86_64.rpm默认安装包在当前目录下3. 安装扩展包code命令打开vscode,ctrl+shift+x打
2022-05-11 23:50:28 1903
原创 QT之插件得使用
Qt 插件for C++Qt中为我们提供了两种开发插件的方式。一种是使用High-Level API接口,一种是使用Low-Level API接口。所谓High-Level API 是指通过继承Qt为我们提供的特定的插件基类,然后实现一些虚函数、添加需要的宏即可。该种插件开发方式主要是用来扩展Qt库本身的功能,比如自定义数据库驱动、图片格式、文本编码、自定义样式等。而我们为自己的应用程序编写...
2019-11-15 17:39:35 602
原创 C#之线程、任务和同步
异步委托创建线程的一个简单的方式就是定义一个委托进行异步调用,异步调用委托的方式有三种:投票、等待句柄和异步回调。.投票通过IAsynResult的IsCompleted方法判断异步操作是否完成public delegate int TakesAWhileDelegate(int data, int ms);private static int TakesAWhile(int data,...
2019-07-01 09:58:48 340
转载 U3D 之Raycast中的Layermask为什么要左移操作问题
if (Physics.Raycast(transform.position + Vector3.up * checkJumpHeight, transform.forward, out hit, checkJumpLength, 1 << MyLayer.BuildingLayer)) {return true;}最后一个参数 int layerMask,为什么这个参数要左移操...
2019-06-27 22:35:09 351
原创 U3D之DoTween
DoTween使用方法官网地址:http://dotween.demigiant.com/使用dotween插件需要引入名称空间using DG.Tweening1.使用DoTween控制一个Vector3的值public Vector3 Vec3 = new Vector3(0,0,0);void start(){ DOTween.To(()=>Vec3,x=>Vec...
2019-06-09 14:30:58 1306
转载 U3D之Yield协程的使用
1.在c#中使用①首选需要定义一个返回值为IEnumerator的协程函数IEnumerator Do(){ Debug.Log("Do 1"); yield return 0; //下面的代码延时到下一帧的update之后 Debug.Log("Do 2");}②使用StartCoroutine函数调用协程函数void Start () { Debu...
2019-06-02 18:29:09 263
原创 U3D之对象缓冲池技术
U3D对象缓冲池技术当我们创建对象的时候,比如我们可能通过以下三种方法:GameObject cube= new GameObject("Cube");GameObject.Instantiate("预制体");GameObject.CreatePrimitive(PrmitiveType.XXX);通过着这种方法创建的物体需要通过Destroy进行销毁,在一个游戏中对于一些需要频繁创...
2019-05-26 21:36:20 462 1
原创 U3D之欧拉角和四元数
U3D 欧拉角和四元数的关系1.两者相互转换:四元数转化成欧拉角 Vector3 v3=transform.rotation.eulerAngles;欧拉角转换成四元数 Quaternion rotation = Quaternion.Euler(v3);2.四元数乘以一个向量:作用:四元数和向量相乘表示这个向量按照这个四元数进行旋转之后得到的新的向量。比如:向量vect...
2019-05-18 17:16:19 459
原创 U3D之摄像机不同视角的方法
U3D摄像机视角U3D的可以通过设置摄像机来实现第一人称,第三人称等不同游戏视角。1第一人称视角四元数转化成欧拉角 Vector3 v3=transform.rotation.eulerAngles;欧拉角转换成四元数 Quaternion rotation = Quaternion.Euler(v3);需要实现的效果:鼠标上下左右移动镜头跟着移动;人物移动和跳跃(这里我们...
2019-05-18 17:16:07 2493
转载 U3D之CharacterController,collider和Rigidbody区别
Rigidbody:多用在“物体”上,因为“物体”都是“死”的,他们的运动一般都是靠物理系统。所以对于Rigidbody的移动,不要用Translate(),要用各种“力”, 比如:Rigidbody的AddForce()方法,通过“力”来让它移动。另外,Rigidbody可以和NavMeshObstacle合用,因为后者也是用在“物”上的,但是一般不要和NavMeshAgent合用,因为这两个都...
2019-05-11 10:18:04 1837
原创 U3D之游戏的存档与读档
U3D存档的方式1.PlayerPrefs:数据持久化方案详述:采用键值对的方式对数据进行存储,可以存储Int,Float,String类型的数据。PlayerPrefs.SetInt("Index",1);PlayerPrefs.SetFloat("Height",183.5f);PlayerPrefs.SetString("Name","Tom");获取数据:PlayerPre...
2019-04-27 11:40:54 958
转载 LUA Require函数
Lua提供高级的require函数来加载运行库。粗略的说require和dofile完成同样的功能但有两点不同:require会搜索目录加载文件require会判断是否文件已经加载避免重复加载同一文件。由于上述特征,require在Lua中是加载库的更好的函数。require使用的路径和普通我们看到的路径还有些区别,我们一般见到的路径都是一个目录列表。require的路径是一个模...
2019-04-25 18:02:47 6550
原创 U3D之状态机管理系统
状态机管理系统概述我们玩游戏中经常有这样一种情况:怪物在平时状态:是一个自己四处反复游走的状态,并不会主动攻击玩家(自动寻路会让怪物自动寻找玩家);当玩家靠近的时候:怪物开始追随玩家,在一定距离内,玩家走到哪他跟到哪当靠的特别近的时候:怪物开始攻击玩家;当玩家加速逃跑:当玩家逃跑到一定的距离的时候,怪物不再追随,回到原来位置继续自己反复游走;上述描述了一种怪物状态管理的一种系统,叫状态...
2019-04-20 15:22:36 1018
原创 U3D学习之数据传值技术
数据传值技术可以在不同的脚本之间进行数据传输,目前我在项目中最常使用的传值技术是脚本组件传值技术,这种技术的缺陷就是耦合性大,当更改了某个脚本名称的时候,其他脚本可能也需要做关联性的改变,本节介绍其他数据传值方法:1.脚本组件传值方法2.类静态字段传值方法3.SendMessage数据传值技术4.定义委托与事件进行数据传值5.PlayerPrefs技术6.XML数据持久化技术7.网络...
2019-04-07 13:14:30 260
原创 U3D之读取配置文件
本节学习如何通过读取xml配置文件来读取游戏对象的数据。首先在Assets文件夹下创建一个StreamingAssets文件夹,文件夹名不能变。先建一个monster文件夹,如图:xml文件内容为:<?xml version = "1.0"encoding = "UTF-8"?><monsters> <monster maxHip="10"spee...
2019-03-31 22:35:20 493
原创 U3D之Mecanim动画
Mecanim概述Mecanim是unity提供的一个丰富而复杂的动画系统,具有如下特点:1:可以很方便的实现Animations Clips(动画片段)的过度,切换和融合2:该系统可以控制人形角色动画,非人形角色动画3:对人形动画系统还能使用重定向系统,即把动画从一个角色模型应用到另一个角 色模型身上4:管理动画间复杂交互作用的可视化窗口5:通过不同逻辑来控制不同身...
2019-03-31 18:37:23 1025
原创 U3D之背包系统
U3D背包系统u3d背包系统功能,通过按键在格子中增加物品,通过鼠标拖动可以自由的拖拽物体,鼠标进入物体时候可以显示物品属性;如图:目录结构:基本实现逻辑:在Assets/StreamingAssets(必须使用这个文件名,放在Unity项目中名为StreamingAssets文件夹中的任何文件将会被一字不差地复制到目标机器上的特定文件夹里 MAC/Win: path = = Ap...
2019-03-16 13:08:14 1220
转载 QML使用C++编写的插件
插件的创建非常简单,但是它可以复用,并且为不同的应用程序扩展类型。使用创建的插件是非常灵活的解决方案。关于插件一个很好的例子见QmlBook-In-Chinese 中最后一章介绍的例子。本文主要备忘生成插件dll,怎么引用。1.创建插件 ,Library->Qt Quick 2 Extension Plugin#ifndef MYITEM_H#define MYITEM_H#i...
2019-03-15 10:19:14 970
转载 C#学习之反射
两个现实中的例子:1、B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况。这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时候就会产生一定的“回音”反射,然后把“回音”进行处理就可以显示出内脏的情况了(我不是医生也不是声学专家,不知说得是否准确_)。2、地球内部结构:地球的内部结构大体可以分为三层:地壳、地幔和地核。地...
2019-02-21 16:03:14 107
原创 C#学习之 BeginInvoke和EndInvoke
C#中的异步操作.Net framework可以让你异步调用任何方法。为达这样的目的,你可以定义一个与你要调用的方法的签名相同的委托。公共语言运行时将自动为该委托定义与签名相同的BeginInvok和EndInvoke方法。BeginInvoke和EndInvoke方法BeginInvoke方法触发你的异步方法,它和你想要执行的异步方法有相同的参数。另外还有两个可选参数,第一个是AsyncC...
2019-02-21 16:03:00 668
原创 U3D之小地图/UI显示3D人物
先建一个相机,这个相机用来专门拍摄UI上显示的三维物体,由于只显示该三维物体,所以将相机的 cull mask设为三维物体的层级(因为用到了层级的概念,所以我们可以layer 里新添加一些层,如player层,某个quad层等,以便于相机来选择只渲染这些层),将Clear Flag设为solid color;在UI图像上选择RawImage,然后在asset里先建一个render textur...
2019-01-19 18:02:07 710
转载 C#之实现forEach的IEnumerable和IEnumerator
foreach可以对字符串数组,list集合等进行遍历,但是它如何对普通类进行遍历呢,使得我们可以对类中的对象属性进行操作呢。在这里我简单总结了三种方法,使得foreach可以对普通类进行遍历。关于IEnumerable与IEnumeratorIEnumerable是一个非常简单的接口,它仅仅包含了一个返回IEnumerator接口对象的抽象方法:GetEnumerator()。而IEnume...
2018-12-22 17:33:13 718
转载 C#之关于继承和扩展方法的一些总结
1.C#中类不支持多继承,原因是多继承会造成许多的歧义,比如假如你有一个类叫老虎,还有一个类叫苍蝇。现在你想新创一个超级老虎类,一种可以飞的老虎。在C++中,你可以定义一种超级老虎类,让其继承自老虎和苍蝇,这样这种老虎就可以飞了。然而,问题出现了,这种超级老虎由于同时也继承自苍蝇,而苍蝇下面有个方法叫吃,参数类型是屎。吃屎的这个方法显然跟我们的超级老虎太不搭了。但是,在C#中可以使用接口,接口是...
2018-12-22 14:59:09 846
转载 Unity3D之onTriggerEnter和onCollisionEnter的区别
太抽象的理论总是让人眼花缭乱,所以我这里以例证为主。1,测试OnTriggerEnter和OnCollisionEnter的区别测试:如果两个物体A,B两者都有碰撞体collider(Box Collider,Sphere Collider,Capsule Collider等)A,B都有刚体(Rigidbody)A或者B中有一个勾选isTrigger或者两者都勾选isTrigger A和...
2018-12-20 10:06:09 746 1
转载 Unity3D之Time.deltatime
先说下Unity3d脚步中常用的两个方法:Update():每帧被调用一次FixedUpdate():每隔Time.fixedDeltaTime被调用一次。Time.fixedDeltaTime默认是0.02s,可以通过Edit->ProjectSettings->Time来设置对游戏有了解...
2018-12-20 09:59:03 2708
转载 C#反射
反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。有了反射,即可对每一个类型了如指掌。另外我还可以直接创建对象,即使这个对象的类型在编译时还不知道。反射的用途:(1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。(2)使用Module了解包含模块...
2018-12-19 17:53:43 109
转载 C# 托管资源和非托管资源
托管资源: 指的是.NET可以自动进行回收的资源,主要是指托管堆上分配的内存资源。托管资源的回收工作是不需要人工干预的,有.NET运行库在合适调用垃圾回收器进行回收。非托管资源: 指的是.NET不知道如何回收的资源,最常见的一类非托管资源是包装操作系统资源的对象,例如文件,窗口,网络连接,数据库连接,画刷,图标等。这类资源,垃圾回收器在清理的时候会调用Object.Finalize()方法。默认...
2018-12-17 22:20:48 121
转载 Lua语言基本语法
声明:文章大部分转载自,http://www.runoob.com/lua/lua-tutorial.html。转载原因:转载之后就不怕原网站关闭,文章丢失。二来可以在文章中记录自己的学习感受和疑惑1.Lua 语言简介https://blog.csdn.net/liujiayu2/article/details/818714902.Lua 环境安装https://blog.csdn.ne...
2018-09-29 15:44:21 192
转载 QML模块定义
一、模块的定义在使用QML时,我们常常看到类似这样的语句:?import QtQuick 2.0import QtSensors 5.0通过这些import语句,我们就能使用QML中的相关控件了。其实这就是导入模块的意思,它包括3个部分:import关键字、模块名称、版本号。模块是一种封装的方式,设计它的人可以单独更新模块内容,然后更新版本号,对使用模块的人没有影响。在项目中,...
2018-09-14 17:35:16 1203
原创 c#学习2
类中的this和base1.this可以用来查看类里面的方法和字段 2.base可以用来查看父类中的方法和字段虚函数和抽象类当把类中的函数定义为虚函数(virtual)的时候,可以在子类中对虚函数进行重写,如果子类进行了重写(override)则派生类实例化调用的是子类的函数方法,如果没有进行重写调用的则是父类的方法。 抽象类的函数方法为抽象方法(abstract),当派生类对父类...
2018-08-06 21:53:12 325
原创 QML国际化
通过添加.qm文件对程序中含有qsTr(“english”)的程序进行翻译,达到双语的目的。 具体步骤如下: 1.编写含有qsTr()的程序 2..pro文件中加入TRANSLATIONS += qml.ts 3.生成ts文件,在qt命令行中使用lupdate命令:lupdate qml/translation.qrc -ts qml.ts 4.打开qt Linguist对qsTr的英文...
2018-07-04 10:10:38 270
原创 QML国际化
通过添加.qm文件对程序中含有qsTr(“english”)的程序进行翻译,达到双语的目的。 具体步骤如下: 1.编写含有qsTr()的程序 2..pro文件中加入TRANSLATIONS += qml.ts 3.生成ts文件,在qt命令行中使用lupdate命令:lupdate qml/translation.qrc -ts qml.ts 4.打开qt Linguist对qsTr的英文...
2018-07-04 10:10:35 608
原创 如何使用QT调用外部可执行程序
在QT中调用外部可执行程序,如exe等。在本例中我们使用QT的QProcess类调用Git Bash中的命令,(在我们项目中需要调用一个bash命令,所以将命令写在.sh文件中,但是MAC中双击.sh文件并不能执行,修改方法是将文件后缀改为.command,解决方法连接:https://forums.macrumors.com/threads/execute-a-sh-script-by-doub...
2018-07-03 21:36:50 16430 1
转载 一个程序从源代码到可执行程序的过程
一个源程序到一个可执行程序的过程:预编译、编译、汇编、链接。 其中,编译是主要部分,其中又分为六个部分:词法分析、语法分析、语义分析、中间代码生成、目标代码生成和优化。 链接中,分为静态链接和动态链接,本文主要是静态链接。一、预编译:主要处理源代码文件中的以“#”开头的预编译指令。处理规则见...
2018-06-26 10:45:13 20144 2
原创 C#学习
建立第一个C#程序using System;namespace Wrox{public class MyFirstClass{static void Main(){Console.WriteLine(&amp;amp;amp;amp;amp;quot;hello from wrox&amp;amp;amp;amp;amp;quot;);Console.ReadLine();return;}}}编译程序 csc F
2018-06-04 20:42:13 2647
原创 qml使用记录
注意1.通过property var 声明的数据类型即使是string类型,仍然无法使用string的方法,为了使用可以直接将其定义为string类型 2.Timer是qml的定时器,restart()方法才会清零,stop不会 3.Tooltip不是所有控件都存在的,可以自己定义一个Tooltip 方法:http://wiki.qt.io/QtQuick_ToolTip_Compone...
2018-06-04 16:13:34 268
转载 Qt 字体大小的计算
在QFont当中有两种方式设置字体大小,一种是PixelSize,另一种是PointSizePoint实际是磅,也就是 1/72 inch我们可以从PainterDevice中得到当前DPI(Dot per inch)。因此 Pixel = DPI * Point / 72例如设置字体为20Point。 那么字体的像素大小是 90 * 20 / 72 约等于 25.可以将字体设置为...
2018-05-04 11:21:23 1105
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人