
C#
文章平均质量分 51
Le_Sam
这个作者很懒,什么都没留下…
展开
-
Lua里实现Unity的拖拽、移入移出等响应事件
源码:C#namespace Game.Scripts.Listener{ public class BaseEventListener : MonoBehaviour { public LuaFunction func = null; public void OnFunc(PointerEventData eventData) { if (func != null) {原创 2022-05-03 10:32:29 · 1117 阅读 · 0 评论 -
在lua里实现类似unity生命周期的监听事件
应用面:能用像写c#一样,在lua里实现业务功能,更好的理解lua源码:c#部分:我用的是xlua,注册方式使用[XLua.LuaCallCSharp],tolua的注册方式自行查找namespace Game.Scripts.Listener{ [DisallowMultipleComponent] [AddComponentMenu("")] // Hide in 'Add Component' menu [XLua.LuaCallCSharp] pu原创 2022-04-30 11:49:15 · 600 阅读 · 0 评论 -
Unity3D-场景中3D物体添加点击事件
Unity3D - 场景中3D物体添加鼠标点击事件鼠标点击3D物体触发,Unity从本质上来说有两种:一种是通过事件(event)触发,一种是通过射线(ray)判断穿过的物体触发。这两种触发的原理是不同的,不论哪种触发都必须满足触发的要求才可以,既然原理不同,触发的要求也不一样,下面详细说明一下3种不同的方式。Unity版本 5.6.2fUnity API版本 2019.1参考 Unity API:https://docs.unity3d.com/ScriptRefere...转载 2021-03-01 15:07:37 · 10899 阅读 · 3 评论 -
Unity 合图插件 ==》【支持原图集更新】
前言:项目需要,1.需提供给美术合图集工具,2.具体图集更新功能,使得新图集不必重新拖拽定位子图解决思路:1.unity调用外部TexturePacker命令行工具,执行合图与切图2.图集内子图所定位的GUID及FileID,在API没找到相应的接口,因此从资源本身下手,通过txt方式打开,强制替换相应的ID参考文档:https://blog.youkuaiyun.com/pdw_jsp/article/details/83623150?ops_request_misc=%257B%2522re原创 2020-09-08 19:56:15 · 1106 阅读 · 0 评论 -
正则表达式字符串
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;namespace tablegen2.common{ #region 正则表达式字符串 /// <summary> /// 正则表达式字符串 /// </summary> public cla.原创 2020-08-18 16:00:56 · 1084 阅读 · 0 评论 -
TCP框架___Unity
using System;using System.IO;using System.Net;using System.Net.Sockets;using System.Linq;using System.Runtime.InteropServices;using System.Threading;using UnityEngine;using System.Text;namespace Core{ public class Protocal { pub.原创 2020-06-09 16:57:28 · 419 阅读 · 0 评论 -
无限列表【UIGridView】应用示例
UIGridView 源码using System;using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;//Introduction: 无限列表//Content上禁止挂载ContentSizeFilter和LayOutGroup之类组件[DisallowMultipleComponent][RequireComponent(typeof(S.原创 2020-06-08 17:45:44 · 321 阅读 · 0 评论 -
Unity向量按照某一点进行旋转
本文实例为大家分享了Unity向量按照某一点进行旋转的具体代码,供大家参考,具体内容如下一、unity的旋转首先要知道一点就是在Unity的旋转中使用过四元数进行旋转的,如果对一个物体的rotation直接赋值你会发现结果不是你最终想要的结果,这个时候我们需要去借助Quaternion来进行旋转。二、向量按照原点进行旋转用到的Unity内置方法Quaternion.AngleAxi...原创 2020-05-06 16:18:48 · 1612 阅读 · 0 评论 -
List___拓展封装
功能:1.获取累加值,越界循环2.输出全部数据using UnityEngine;using System.Collections;using System.Collections.Generic;using System.Linq;using System;//namespace CustomExtension//{ public static class ListExte...原创 2018-05-14 11:37:14 · 232 阅读 · 0 评论 -
委托___拓展封装
using UnityEngine;using System.Collections.Generic;using System;/// <summary>/// Delegate 的扩展方法,当委托不为空时执行 (就算为空也可以调用扩展)/// </summary>public static class ActionExtension{ /// &l...转载 2018-05-14 11:39:25 · 203 阅读 · 0 评论 -
String___字符串扩展封装
using UnityEngine;using System.IO;using System.Collections;using System.Text;/// <summary>/// 字符串的处理/// </summary>public static class StringExtension{ /// <summary> /...转载 2018-05-14 11:41:44 · 306 阅读 · 0 评论 -
C#_字节数组分段操作__Buffer.BlockCopy()与BinaryReader.ReadBytes() 的区别
下面例子是关于YUV420P的操作,需要把一帧YUV420P需要拆分成三段 Y ,U, V提供两种方法.关于效率请自行测试一:BlockCopy() byte[] data = new byte[Width * Height * 3 / 2]; byte[] dataY = new byte[Width * Height]; byte[...原创 2017-11-05 10:58:57 · 2528 阅读 · 0 评论 -
类型参数的约束(C# 编程指南)
约束告知编译器类型参数必须具备的功能。 在没有任何约束的情况下,类型参数可以是任何类型。 编译器只能假定 Object 的成员,它是任何 .NET 类型的最终基类。 有关详细信息,请参阅使用约束的原因。 如果客户端代码尝试使用约束所不允许的类型来实例化类,则会产生编译时错误。 通过使用 where 上下文关键字指定约束。 下表列出了七种类型的约束:约束 描述 where T : st...转载 2018-08-29 17:12:58 · 410 阅读 · 0 评论 -
C#快速获取JPG图片大小及英寸分辨率
public static int getJpgSize(string FileName, out Size JpgSize, out float Wpx, out float Hpx) {//C#快速获取JPG图片大小及英寸分辨率 JpgSize = new Size(0, 0); Wpx = 0; Hpx = 0...转载 2018-11-14 15:29:34 · 3914 阅读 · 0 评论 -
FileStream 总结
FileStream如何去理解FileStream?通过前3章的学习相信大家对于Stream已经有一定的了解,但是又如何去理解FileStream呢?http://tudou.fzl1314.com 请看下图 我们磁盘的中任何文件都是通过2进制组成,最为直观的便是记事本了,当我们新建一个记事本时,它的大小是0KB, 我们每次输入一个数字或字母时文件便会自动增大4kb,可...转载 2018-11-15 12:10:46 · 2231 阅读 · 1 评论 -
Unity优化之GC——(二)合理优化Unity的GC
转载请标明出处http://www.cnblogs.com/zblade/ 最近有点繁忙,白天干活晚上抽空写点翻译,还要运动,所以翻译工作进行的有点缓慢 =。= PS: 最近重新回来更新了一遍,文章还是需要反复修改才能写的顺畅,多谢各位的支持 :D 本文续接前面的unity的渲染优化,进一步翻译Unity中的GC优化,英文链接在下:英文地址介绍: 在游戏运行的时候...转载 2018-12-05 14:42:58 · 381 阅读 · 0 评论 -
Unity优化之GC——(一)认识堆(heap)&栈(stack)
尽管在.NET framework 下我们并不需要担心内存管理和垃圾回收(GarbageCollection),但是我们还是应该了解它们,以优化我们的应用程序。 同时还需要具备一些基础的内存管理工作机制的知识,这样有助于解释日常程序编写中的变量的行为。 本文将学习和理解堆和栈的基本知识,变量类型以及为什么一些变量能够按照它们自己的方式工作。在.NET framework环境下,当我们执行代...转载 2018-12-05 15:20:58 · 3412 阅读 · 3 评论 -
Unity调Android相关的API,只需一个文件即可搞定
方式与流程:利用Eclipse编译生成JAR,直接扔到工程的目录下即可使用,不需要配置AndroidManifest.xml等乱七八糟的东西。。。 Eclipse端版本: 新建android项目 工程创建好之后,在src文件夹下创建新包,名字随意在新建一个Class类 之后需要添加依赖库 ,Jar目录在unity的安装路径...原创 2019-02-16 10:27:37 · 1563 阅读 · 0 评论 -
UGUI __自動佈局
Auto Layout SystemAuto Layout System 是基於Rect TransformLayout System 之上的系統,自動調整一個或多個的元素大小、位置、間格,又分為 Layout Controllers(父物件) 與 Layout Elements(子物件)兩部分,一個簡單的 Auto Layout 架構如下 (此處介紹理論,實作留到後面)...转载 2019-06-17 11:30:00 · 313 阅读 · 0 评论 -
c# 练手案例,2DImage图片处理
案例所涉及到的内容:文件读取,写入。图片的形变,切割,缝合。项目的流程如下:1.检索文件2.修改图片的尺寸比例成3:23.按3:2比例分割图片成一块块正方形4.批量修改名字5.按顺序名字把子图片合并完整的一张图namespace ImageTool{ class Program { private static strin...原创 2017-06-12 10:07:08 · 785 阅读 · 0 评论 -
C# using关键字
using 关键字有两个主要用途: (一).作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型。 (二).作为语句,用于定义一个范围,在此范围的末尾将释放对象。 (一). ................忽略(二).作为语句using 语句允许程序员指定使用资源的对象应当何时释放资源。using 语句中使用的对象必须实现转载 2018-02-05 11:55:30 · 390 阅读 · 0 评论 -
MemoryStream类相关
public static void OnTestMemory() { //创建测试数据 //CreateExampleData(); //创建内存流对象,初始分配默认字节的缓冲区 MemoryStream ms1 = new MemoryStream(); ...原创 2018-01-12 16:56:59 · 431 阅读 · 0 评论 -
C# Collection集合介绍
ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要转载 2017-12-15 17:06:15 · 1348 阅读 · 0 评论 -
计时器-CrudeElapsedTimer
//---------------------------------------------------------------------------------// // Copyright (c) 2011 CMGE Inc. All rights reserved.// // // // // // // // //----转载 2017-07-21 11:13:57 · 332 阅读 · 0 评论 -
C# 如何正确删除List中的item
主要修改了for里的逻辑List<string> mlist = new List<string>();for (int i = mlist.Count - 1; i >= 0; i--){ if (mlist[i].Equals("test")) { mlist.Remove(mlist[i]); }}...原创 2017-07-21 11:03:17 · 9734 阅读 · 0 评论 -
C# File类常用方法
File.ReadAllLines(“path”, Encoding.Default);//读取所有行,返回string[]File.ReadAllText(“path”, Encoding.Default);//读取所有文本返回stringFile.ReadAllBytes(“path”);//读取文件,返回byte[],把文件作为二进制来处理。==================...转载 2017-07-06 14:46:08 · 544 阅读 · 0 评论 -
C# params关键字
使用 params 关键字可以指定采用数目可变的参数的方法参数。不固定参数,也就是说 参数的维数不固定,你想几个,就可以几个,在获取参数的地方也相应读取的就可以了可以发送参数声明中所指定类型的逗号分隔的参数列表或指定类型的参数数组。还可以不发送参数。 如果未发送任何参数,则 params 列表的长度为零。在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。下面的示例演示可向 params 参数发送参数的各种方法。转载 2017-02-09 18:00:37 · 312 阅读 · 0 评论 -
一直想得到这样一个函数,创建类的一个实例,该类由指定的泛型参数指定
创建类型的一个实例,该类型由指定的泛型类型参数指定。也就是创建一个泛型参数所属类型的对象。C#public static T CreateInstance<T>() 类型参数T要创建的类型。返回值类型:T对新创建对象的引用。 通常情况下,在应用程序代码中无需使用 CreateInstance,因为在编译时类型必须是已知的。如果编...转载 2017-06-05 15:12:41 · 694 阅读 · 0 评论 -
C# 调用C++ DLL (二)
最近帮底层开发的同时用C#重新封装一下dll,也就是用C#类来封装C++Dll里的方法,以供用户使用。之前也用到过类似的应用,大多数问题都出在类型转换上,但是这次的应用层出不穷,所以在这里总结一下,以供自己以后查阅,也希望对大家能够有所帮助。 首先,重复一下一些基本使用方法。具体的那些方式在这里就不重复讲了,网上很多的。比如http://blog.youkuaiyun.com/sun转载 2017-08-26 10:51:14 · 723 阅读 · 0 评论 -
浅谈 C# ref 和 out 的使用方法
有过C#基础知识的都应该清楚Ref和Out的使用方法,因此本人的这随笔主要是针对刚入门的新手而言的,大师请绕道而行;开始主题:C#有两种参数传递方式:传值和引用,传值就是变量的值,而引用则是传递的变量的地址;本文中说的Ref和Out都是引用传递,Ref的重点是把值传给调用方法,Out则是得到调用方法的值,类似于有返回类型的方法返回的值;在使用两者时一定要注意一下两点转载 2017-06-05 14:47:39 · 2944 阅读 · 0 评论 -
C#操作符??和?:
先看如下代码:string strParam = Request.Params["param"];if ( strParam== null ){ strParam="";} string strParam= Request.Params["param"] == null ?"":转载 2017-11-27 16:43:30 · 234 阅读 · 0 评论 -
BinaryWriter和BinaryReader(二进制文件的读写)
C#的FileStream类提供了最原始的字节级上的文件读写功能,但我们习惯于对字符串操作,于是StreamWriter和 StreamReader类增强了FileStream,它让我们在字符串级别上操作文件,但有的时候我们还是需要在字节级上操作文件,却又不是一个字节 一个字节的操作,通常是2个、4个或8个字节这样操作,这便有了BinaryWriter和BinaryReader类,它们可以将一个字转载 2017-12-05 11:02:54 · 4871 阅读 · 0 评论 -
C#中String类 --> "检索","截取"等几个方法(IndexOf、LastIndexOf、Substring、Split)
String.IndexOf 方法 (Char, Int32, Int32)指定字符在此实例中的第一个匹配项的索引。搜索从指定字符位置开始,并检查指定数量的字符位置。String.IndexOf(value, startIndex, count)参数value:要查找的 Unicode 字符。 startIndex:搜索起始位置。 count:要检查的字符位置数。返回值(Int...原创 2017-07-13 18:52:03 · 3027 阅读 · 0 评论 -
Marshal类的两个方法StructureToPtr和PtrToStructure实现序列化
我们主要是使用Marshal类里的两个方法:第一个是StructureToPtr,将数据从托管对象封送到非托管内存块。第二个是PtrToStructure,将数据从非托管内存块封送到新分配的指定类型的托管对象。只要有了这两个相互转换的方法,我们就可以实现序列化了。首先我们先来看下序列化序列化:有一个前提条件,那就是我们必须要知道需要序列化对象的大小。转载 2017-11-22 16:06:44 · 3278 阅读 · 0 评论 -
使用队列(Queue)解决简单的并发问题
有一个场景:一个抢购的项目,假设有5件商品,谁先抢到谁可以买,但是如果此时此刻(这里的此时此刻假设是相同的时间),有100人去抢这个商品,如果使用平时的方法会出现什么情况呢?你懂的,这里所说是就是有关并发的问题。平时我们去超市购物去结账的时候就是排队,这里我们先让抢购人排好队,按时间,谁先点击的抢购按钮谁就排在前面,这样就形成了一个队列,然后我们再对这个队列处理,这样就不会出现并发的问题了。(...转载 2017-11-06 15:23:42 · 2981 阅读 · 0 评论 -
Unity中的C#与C++交互
参考:Unity Manual-Low-level Native Plugin Interface源码demo演示了一个渲染三角形的例子C++部分代码实现了对底层API的封装以及核心功能实现。RenderingPlugin.cpp中定义了C++的接口。其中定义了一系列全局变量,用户通过接口函数对这些全局变量赋值。如:设定纹理// -------------------...转载 2017-10-24 16:14:53 · 2747 阅读 · 1 评论 -
各种数组元素复制方式的性能比较
原本这只是“字符串”话题的一个分支,不过后来我发现这个问题单独来看也有一定参考价值,也有一些问题值得讨论的地方,其中也有一些问题希望得到高手指点,最终打算把这个话题独立处理。话不多说,现在就来看看。这个话题是“复制数组元素”,它最简单的情况也就是把源数组的所有元素,一一复制到等长目标数组中去。在.NET中,我们可以使用多种方法来实现这个效果:使用for语句一个个复制元素。使用数组的转载 2017-09-11 16:40:27 · 438 阅读 · 0 评论 -
C# 调用C++ DLL (三)
C#调用 非托管C++ dll 传入Stringbuilder、ref string 、 ref char 等都报错,如mscorlib.dll 异常、其他信息: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏 等等,后来发现是dll 生成后一直没更新,放错位置了。。。 = =||不过也学习了一下编译器及类型相关的知识,整理如下:1、 cl.exe /Gz 参数指定编转载 2017-08-28 17:19:03 · 529 阅读 · 0 评论 -
C# 调用C++ DLL (一)
在合作开发时,C#时常需要调用C++DLL,当传递参数时时常遇到问题,尤其是传递和返回字符串是,现总结一下,分享给大家:VC++中主要字符串类型为:LPSTR,LPCSTR, LPCTSTR, string, CString, LPCWSTR, LPWSTR等但转为C#类型却不完全相同。主要有如下几种转换:将string转为IntPtr:IntPtr System.转载 2017-08-26 10:33:49 · 781 阅读 · 0 评论