- 博客(59)
- 资源 (19)
- 收藏
- 关注
原创 Unity中的向量实验
在读UnityShader入门精要数学篇的时候计算了矢量相关的数学公式,突然有个想法,用Unity的Vector来验证一下。向量(也就是矢量)是Unity中最基础的数学运算,主要左右还是描述物体的平移缩放旋转。前置条件是左右手坐标系需要了解清楚。
2023-03-17 09:45:34
612
原创 C#实现Socket的消息收发,ServerSocket,ClientSocket
知道Socket原理,但是一直没有在代码里面尝试怎么操作,闲来无事实现了一个初步的Socket服务器和客户端连接的Demo,但是没有实现更高级一点的系列化传输,加解密处理以及队列和断线重连等处理,感兴趣的话可以自己再尝试尝试。主要分服务器Socket和客户端Socket,只用了简单的字符串转byte[]的传递测试收发消息。客户端给服务器发all代表广播给所有客户端,给服务器发single代表只点对点的进行回消息。分ServerSocket和ClientSocket来具体实现服务器与客户端的收发逻辑。
2023-01-04 17:38:55
3964
1
原创 Unity跨天的判断,以及时间戳转换成天时分秒
有时候策划需要一个第二天0点刷新活动界面的操作,这个案例可以帮助解决部分问题。然后测试了下时间戳的相互转换以及倒计时的计时操作等等。写了一些常用的时间戳转换和时间戳解析的函数。详情看代码逻辑和注释。
2022-12-25 22:06:00
2457
原创 Unity物体移动的几种方式
主要是Vector3的内置函数以及CharacterController的Move。还有一个固定的每帧进行移动的操作。
2022-12-25 16:41:53
1364
原创 Unity Texture优化和格式统一设置
主要逻辑,按照项目所需,统一Texture格式和压缩方式,可以举一反三。上门两篇文章可以多看看,了解下原理,了解下怎么降内存和适配移动平台。
2022-11-04 12:30:05
2167
原创 生成keystore以及导出keystore公钥,私钥信息
有时候需要做一些证书,特别是安卓接入SDK,提交包什么的需要填入公钥私钥信息,可能需要RSA 1024位或其他位数的信息。3. 生成私钥companyname_private_key.pem文件。这里提供一个能获取keystore信息和公钥私钥的命令。openssl我就不再写了,自己再百度下怎么处理。keystore导出私钥(.key)操作步骤。2. 从PKCS12转换成PEM格式。2. 查看keystore信息。1. 从JKS转换到PKCS12。1. 生成keystore。4. 转换成pem证书。
2022-10-25 20:46:55
7191
原创 Unity游戏事件系统
通过一个小Demo测试一个简单的通用事件管理系统分两步,一个管理器,一个事件ID定义类当然,还可以扩展,比如加上异步操作,消息类自定义等等1.EventManagerusing System;using System.Collections.Generic;using UnityEngine;namespace Core.Scripts.Event{ /// <summary> /// 事件管理器 /// 通用与UI 逻辑 数据等系统 .
2022-01-24 17:50:21
2389
1
原创 Opengl加载与创建纹理
先上三张效果图SampleTex.cpp/*** 加载纹理图片*/#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>#include <Shader/Shader.h>//定义STB_IMAGE_IMPLEMENTATION,预处理器会修改头文件,让其只包含相关的函数定义源码,等于是将这个头文件变为一个 .cpp 文件了#define STB...
2021-11-02 16:56:50
2133
1
原创 Opengl Shader的初步使用
主要是按照Opengl的网站学习的Shader文件读取和使用VertexShader.vs#version 330 corelayout (location = 0) in vec3 aPos;layout (location = 1) in vec3 aColor;out vec3 ourColor;uniform float xOffset;//输出顶点给片元着色器out vec3 selfPos;void main(){ //向左偏移,倒置三角形 gl_Posit
2021-10-28 15:21:52
752
原创 GLFW窗口创建
记录下Opengl的学习流程第一篇的窗口创建以及输入处理,回调设置/*** GLFW窗口*/#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>void framebuffer_size_callback(GLFWwindow* window, int width, int height);void inputProcess(GLFWwindow* window);
2021-10-15 15:56:36
975
原创 渲染管线的理解
图形渲染管线可以被划分为两个主要部分:第一部分把你的3D坐标转换为2D坐标,第二部分是把2D坐标转变为实际的有颜色的像素。着色器(Shader):图形渲染管线接受一组3D坐标,然后把它们转变为你屏幕上的有色2D像素输出。图形渲染管线可以被划分为几个阶段,每个阶段将会把前一个阶段的输出作为输入。所有这些阶段都是高度专门化的(它们都有一个特定的函数),并且很容易并行执行。正是由于它们具有并行执行的特性,当今大多数显卡都有成千上万的小处理核心,它们在GPU上为每一个(渲染管线)阶段运行各自的小程序,从
2021-10-15 15:51:41
221
原创 Unity aab分包Google提审(Play Asset Delivery)
Google关于Play Asset Delivery的介绍,自己去看吧,如果说打不开想不了办法,那这边建议转行,别在这行混了https://developer.android.com/guide/app-bundle我主要讲下我这边的步骤:1.下载com.google.play.assetdelivery导入Unityhttps://github.com/google/play-unity-plugins/releases导入之后的界面:2. 勾选Separate Base .
2021-09-04 15:30:17
6937
2
原创 Unity转盘抽奖界面的实现
之前在公司做过一次转盘抽奖,现在又要写了发觉忘了。。留个博客记录下,也方便后来者查阅。实现的效果图如下:下面是代码片段:using UnityEngine;/// <summary>/// 描述: 思路是这样的,先假旋转,旋转个指定的时间,然后到时间了就做真旋转,旋转到指定位置之后停止旋转/// 日期: 2020/02/25/// 作者: 华阳张学友/...
2020-02-25 23:32:25
2116
原创 Unity倒计时(Update)
上面是效果下面是代码using UnityEngine;using UnityEngine.UI;/// <summary>/// Des: 倒计时测试/// Auth:https://blog.youkuaiyun.com/dinghqalex/// </summary>public class TimeTest : MonoBehaviour{ ...
2019-08-23 10:13:36
2548
原创 VS NuGet离线包(缓存包)nupkg安装
最近项目需要在NuGet添加一个依赖项,无奈公司开发机没网。。。说出来各位看官可能不信,做开发的开发机居然没网!!!!!(那你还不赶快离职闪人)没办法,项目需要还是得把东西扔进VS里面去,只有想办法把依赖项加进去了如果有网,添加NuGet里面的依赖项非常简单,搜索出来直接安装就行。言归正传,还是来说说离线安装NuGet里面程序包依赖项的问题。首先。https://w
2016-04-29 11:51:11
69734
3
原创 C++实现简单的String类
#include "stdafx.h"#include #include // delete之后将指针置为NULL防止空指针#define SAFE_DELETE(p) do{ if(p){delete(p); (p)=NULL;} }while(false);class String{public: // 普通构造函数 String(const char *str = N
2015-06-02 16:18:43
951
原创 fatal error C1083: 无法打开包括文件: “SDKDDKVer.h”: No such file or directory
妈的,搞了毛大一歇!!解决办法:项目--右键--属性--配置属性--常规--平台工具集--选择Visual Studio 2013 -WindowsXP(v120_xp)
2015-05-27 16:29:12
4659
1
原创 为啥要implements Serializable
一、为啥要implements Serializable 一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的。因此如果要序列化某些类的对象,这些类就必须实现Serializable接口。而实际上,Serializable是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化。 什么情况下需要
2015-05-26 16:44:44
24904
原创 安卓屏幕适配(各种方案组合)
本着分享技术的原则,写下这篇不是太完美的文章,希望能帮助到广大的android coder,一起共同进步本来是不想写这些出处,图片加水印的,但是有些无良网站,直接爬虫抓文章的太可恶了,希望尊重别人的成果。欢迎转载,但是转载请注明出处:http://blog.youkuaiyun.com/dinghqalex以前对安卓屏幕适配这一块确实感觉蛋疼,始终做不好完美的适配其实屏幕适配这块,还是
2015-05-26 10:14:43
1076
原创 安卓利用SharedPreferences保存用户名和密码
由于项目需要保存用户输入的用户名和密码,想到的比较简单的方法就是利用SharedPreferences来保存不多说,上代码了/** * 使用SharedPreferences保存用户登录信息 * * @param context * @param username * @param password */ public static void saveLogin
2015-05-22 11:33:26
3871
原创 安卓两页合并到一页滑动显示的布局(安卓上下滑动页面)
最近接外包,项目上遇到个问题,客户做了两页界面,我开始没找到合适的方法将两页内容很好的显示出来,就在第一页加了一个按钮然后跳转到第二页来显示,但是这样其实效果不是很好。纠结了一会然后想到了ScrollView然后嵌套布局。 其实思路就是这样: 两页或者更多的布局内容 将做好的界面统一
2015-05-15 11:12:31
4436
原创 安卓完美退出App以及跨界面关闭Activity
在安卓项目中,当有多个App时,通过StarActivity方法带参数可以在另一个Activity可以将前一个Activity关闭掉,但是有一个局限,就是跳转了多个Activity之后,就尴尬了,不能关闭全部的界面。 于是,通过键值对容器动态添加Activity,然后根据key删除相对应的Activity就可以进行跨Activity来关闭界面了,具体代码下面贴出。packag
2015-05-10 22:30:59
3430
原创 Stl List使用
一、 List简介 STL中的list就是一双向链表,因此它的内存空间是可以不连续的,通过指针来进行数据的访问,这使list的随机存储变得非常低效,list不支持随机访问,就是没有 at()函数和[]操作符。但是list可以很好地支持任意地方的插入和删除,只需移动相应的指针即可,可高效地进行插入删除元素。 总之,如果你需要大量的插入和删除,而不关心随即存取,
2015-03-17 18:26:38
1017
原创 Stl各容器对比
1. vector 变长一维数组,连续存放的内存块,有保留内存,堆中分配内存; 支持[]操作,高效率的随机访问; 在最后增加元素时,一般不需要分配内存空间,速度快;在中间或开始操作元素时要进行内存拷贝效率低; vector高效的原因在于配置了比其所容纳的元素更多的内存,内存重新配置会花很多时间;注:需要高效的随即存取,而不在乎插入和删除使用vector。
2015-03-11 09:50:51
1700
原创 Stl Map用法
一、Map简介 关联的本质在于元素的值与某个特定的键相关联,而并非通过元素在数组中的位置类获取。它的特点是增加和删除节点对迭代器的影响很小,除了操作节点,对其他的节点都没有什么影响。对于迭代器来说,不可以修改键值,只能修改其对应的实值。二、Map的优势 1. 自动建立Key-value(键值对)的对应。key 和 value可以是任意你需要的类型,但
2015-03-10 21:35:31
1119
原创 stl deque使用详解
一、 Deque阐述 deque和vector都是顺序性容器,deque容器是C++标准模版库(STL,Standard Template Library)中的部分内容。deque容器类与vector类似,支持随机访问和快速插入删除,它在容器中某一位置上的操作所花费的是线性时间。与vector不同的是,deque还支持从开始端插入数据:push_front()。dequ
2015-03-09 18:02:04
2184
原创 Java反射常用到的几个方法,获取Private字段,执行其他类的方法,获取类名
引言已经很久没有写过Java代码了,写了一年的的C++,今天看到C++的friend(友元)可以操作一个类的private属性,突然想到Java的反射,今天用Java写了一小段代码实验了一下,项目中比较实用。也是在以前做安卓的项目的时候老是听到师傅说反射,没怎么用过,终于尝试了一下。代码片段Java的反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法。对于任意一个对象,都
2015-02-12 17:39:57
6651
原创 Eclipse查看Java源码的方式
按Ctrl 鼠标左键点击方法名,这就是在Eclipse查看源码的方法。 问题是一般情况下点击了没反应,就傻逼了。 通过下面几个步骤可以完美的解决这个问题,可以看到Java的源码实现。 1.点 “window“-> “Preferences”-> “Java” -> “Installed JRES”; 2.此时”Installed JRES”右边是列表窗格,列出了系统中的JRE 环境,选择
2015-02-12 17:04:20
2871
原创 C++的构造函数初始化列表
在看人家源码的时候卡住了,看见初始化构造函数的时候看不懂了,构造函数的:,,,这些都是些啥。纠结了半天,然后各种问各种搜资料,对这个东西理解了一部分了。 C++类中成员变量的初始化有两种方式:构造函数初始化列表和构造函数体内赋值。下面看看两种方式有何不同。#include "stdafx.h"#include using namespace std;cl
2015-02-04 16:08:54
946
原创 游戏中最常用的A*算法(Java版)
自动寻路的A*算法原理看其他的文章吧,不想写了这个类是公司封装好了的类拿出来分享了看剑:package main.java.GameUtil;import java.util.ArrayList;import java.util.List;public class MGE_AStar{ private final byte G_OFFSET = 1; // 每个图
2015-02-03 17:35:56
1298
原创 快速排序
实际中最常用的一种排序算法,速度快,效率高,就像它的名字一样。快速排序的基本思想是:1.先从数列中取出一个作为基准。2.分区过程,将比这个基数大的数全部放在它的右边,小于或者等于它的数就全部放在它的左边。3.然后再对左右区间重复第二步,直到各区都只有一个数就排序完成了。实现的代码:#include "stdafx.h"#include void q
2015-02-03 16:00:31
1081
原创 VS看反汇编、寄存器、内存、堆栈调用来学习程序设计
其实计算机这套东西是真的太大了,太多的东西要学要理解更要掌握学习的时候要不断拆分理解才能掌握得更牢固学程序的时候可以通过查看程序的运行过程进而加深自己对程序设计的理解调试出最优化的代码VisualStudio,微软的高端IDE,可以写C/C++可以搞C#,写网站等等,牛逼得爆VS调试方便功能强大,一般公司也用它来开发我在学C++的时候也是用的VS,在学习的时候感觉用到的东西
2015-01-26 13:19:39
6176
原创 C语言冒泡排序
冒泡是一个程序员接触最早的一个排序算法,简单粗暴。冒泡排序的核心思想就是:依次比较相邻的两个数,如果第一个数比第二个大就交换。程序还是要自己动手写,这样理解得才快。#include "stdafx.h"#include #include #define SIZE(A) sizeof(A)/sizeof(*A)using namespace std;void bubble
2015-01-23 17:37:16
1406
原创 C++ Stl的Vector使用
在项目中,vector使用很多很广,与其说vector使用很多不如说STL使用的很多。C++的STL库封装了常用的数据结构,它们里面又实现了一些非常实用的算法,使得STL被广泛使用,减低项目开发难度和周期。vector是线性容器,它的元素严格的按照线性序列排序,和动态数组很相似,和数组一样,它的元素存储在一块连续的存储空间中,这也意味着我们不仅可以使用迭代器(iterator)访问元素,还可以使用
2015-01-22 23:32:54
1504
原创 顺序存储结构和链式存储结构的选择
容器的存储分为顺序存储和链式存储一、顺序存储结构 从数据结构的角度来说顺序储存结构的存储空间固定,可扩展性差,但是如果数据元素个数已知,较链式存储节省空间。 它的优点是随机读取任意一个元素(因为元素时顺序存储的,所以元素的存储位置之间有一定的关系)但是顺序存储的缺点是删除、插入操作需要花费很多时间在移动元素上。 STL中的vector就是典型的顺
2015-01-21 15:26:13
4662
原创 pthread的pthread_join()函数理解实验
一、使用方式pthread_t tid;pthread_create(&tid, NULL, thread_run,NULL);pthread_join(tid,NULL);创建线程之后直接调用pthread_join方法就行了。二、为什么要使用pthread_join() 在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,
2015-01-20 18:51:55
44760
7
原创 Windows上VS使用pthread重温经典多线程卖票(pthreads-w32-2-8-0-release.exe)(windows上使用pthread.h)
一、安装pthreads-w32-2-8-0-release.exe至于怎么下载这个exe还是自己去百度吧,优快云上反正可以下载,而且有免费版本的,资源里面搜下就行了。然后安装这个就行了(按照下面的123来就行了)。然后Pre-built.2这个文件夹有个include和lib,把它们分别拷贝到C:\Program Files (x86)\Micros
2015-01-20 16:45:31
4426
1
NodeCanvas 2.6.2.unitypackage
2017-05-31
Cocos2dx-CocosDenshion-Win32实现setBackgroundMusicVolume函数
2014-11-16
JSP+Servlet+Javabean+Mysql学生成绩管理系统
2014-11-10
数据结构.严蔚敏-吴伟民
2014-10-17
Sublime Text2+QuickXDev
2014-08-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人