
C#
文章平均质量分 51
考班格
一只老菜鸟
展开
-
Unity3d OnDestroy问题
切换场景时,OnDestroy()方法执行问题,再次进入场景报错(UI界面组件被删除)事件解绑的方法需要在切换场景时,手动解绑1.代码控制物体删除2.手动清理内存Resources.UnloadUnuseAssets()GC.Collect()Caching.ClearCache()...原创 2021-09-14 12:00:11 · 1463 阅读 · 0 评论 -
Unity3d 模拟鼠标框选物体
脚本需要挂载在相机上,材质球选择默认Sprites-Default./// <summary>/// 鼠标框选屏幕选中物体/// </summary>public class RectRender : MonoBehaviour{ private bool onDrawingRect;//是否正在画框(即鼠标左键处于按住的状态) private Vector3 startPoint;//框的起始点,即按下鼠标左键时指针的位置 private V...原创 2021-08-24 23:26:10 · 732 阅读 · 1 评论 -
Unity3d:使用插件导出Excel
使用插件一键导出excel文件private void SaveExcel(){ string _filePath=Application.streamingAssetsPath+"/log.xlsx"; string _sheetName="详情"; FileInfo _excelName=New FileInfo(_filePath); //如果存在文件,就删除,重新创建 if(_excelName.Exists){ _excel...原创 2021-01-24 14:30:59 · 387 阅读 · 0 评论 -
unity3d:unity启动外部程序,并传递参数(json)
//打开外部程序 public void StartExe(){ //获取路径 string dir=Environment.CurrentDirectory; ProcessStartInfo pi=new ProcessStartInfo(); pi.FileName=dir+"/1.exe"; pi.Argrments=js.ToJson();//传递json vrar=Process.Start(pi);//获取进程 //绑定外...原创 2020-11-15 13:28:02 · 950 阅读 · 0 评论 -
Unity3d:检测本地是否和服务器连接正常
public class PintTest : MonoBehaviour { public string ip = string.Empty;//IP地址 private bool iswork = false;//是否有网络通信 PingReplay re; void Start() { ip = "61.135.169.121"; // 百度 InvokeRepeating("SendPing",1,3); } ...原创 2020-11-15 12:55:50 · 754 阅读 · 0 评论 -
Unity3d:代码自动添加场景到BuildSettings
//在启动Unity的时候运行该编辑器脚本 [InitializeOnLoad] public class AutoAddSomeScenesToBuild { // 注意一定要是静态方法 static AutoAddSomeScenesToBuild() { // 获取存放指定场景Scene的文件夹信息 var scenesDir = new DirectoryInfo(Application.dataPath + "/Scenes");...原创 2020-11-15 12:34:40 · 1194 阅读 · 0 评论 -
unity3d:使用log4net输出日志到unity3d UI
下载最新log4net.dll到unity的Plugins文件夹 unity中设置.net为最新的编写输出到UI上的类public class UiLogEventArgs : EventArgs //自定义的类 { public string Message { get; private set; } public UiLogEventArgs() { } public UiLogEventArgs(string message) { ...原创 2020-10-18 20:55:34 · 567 阅读 · 0 评论 -
unity3d:使用log4net输出日志到文件
下载最新log4net.dll到unity的Plugins文件夹/// <summary> /// 日志打印功能 /// </summary> public class LogTest : MonoBehaviour { private static ILog log = LogManager.GetLogger("FileLogger"); private void Start() { //输出到文件 G...原创 2020-10-18 20:39:54 · 1301 阅读 · 0 评论 -
Unity3d:代码设置分辨率和全屏
public void SetScreen(){ Screen.SetResolution(w,h,false); Screen.fullScreen=true; }原创 2020-10-11 20:16:05 · 1423 阅读 · 0 评论 -
Unity3d:代码控制画质
void SetQuality(){ Qualitysettings.SetQualityLevel(3,true); }原创 2020-10-11 20:12:29 · 436 阅读 · 0 评论 -
Unity3d:代码运行时间统计
public static class Timecount { public static Stopwatch st=new Stoppwatch(); pub static void startTime(){ st.Start(); } public static void StopTime(){ st.Stop(); } }原创 2020-10-11 20:08:37 · 712 阅读 · 0 评论 -
Unity3d网络:UnityWebRequest使用方法
///发起请求,获取列表,保存到本地 IEnumerator StartRequest(){ Uri uri=new Uri(serverpath);//转换为标准uri UnityWebRequest request=UnityWebRequest.Post(uri,""); if(request.isHttpError||request.isNetworkError){ Debug.Log(request.error); yield break; } yield retu...原创 2020-08-23 15:26:30 · 722 阅读 · 0 评论 -
Unity3d:代码控制打开windows窗体
// ======================================================== // Module:打开窗体类型 // Author:tan // Time:2020/07/26 11:38:38 // ======================================================== using System; using System.Collections; using System.Collections.Gene.原创 2020-07-26 13:02:12 · 466 阅读 · 0 评论 -
Unity3d:代码动态控制Image转换sprite
public class ImageChangeSprite { //传入texture类型,转换 sprite类型 public static Sprite Createsprite(Texture2D tex) { Sprite sp= Sprite.Create(tex,new Rect(0.0f,0.0f,tex.width,tex.height),new Vector2(0.5f,0.5f)); return sp; }...原创 2020-07-26 12:56:37 · 1297 阅读 · 0 评论 -
Unity3d:坐标转换
Camera.main.ScreenToWorldPoint();//屏幕坐标转世界坐标 Camera.main.WorldToScreenPoint();//世界坐标转屏幕坐标 Camera.main.WorldToViewportPoint();//世界坐标转视口坐标 Camera.main.ViewportToWorldPoint();//视口坐标转世界坐标 Camera.main.ViewportToScreen...原创 2020-07-12 01:38:18 · 229 阅读 · 0 评论 -
Unity3d:获取图片在屏幕的坐标
Vector3[] corners = new Vector3[4]; gameObject.GetComponent<RectTransform>().GetWorldCorners(corners); foreach (var item in corners) { Debug.Log(item); }原创 2020-07-12 01:33:31 · 1792 阅读 · 0 评论 -
Unity3d Quaternion角度限制
Quaternion qa; public void RotateQ(){ var v = Input.GetAxis ("Mouse X"); var h = Input.GetAxis ("Mouse Y"); qa *= Quaternion.Euler (h,v,0); qa = ClampX (qa,-30f,30f); qa = ClampY (qa,-30f,30f); thi...原创 2020-07-12 00:33:29 · 1015 阅读 · 0 评论 -
Unity3d:共享声音
共享特效管理器 public class AudioSourceManager : MonoBehaviour { public static AudioSourceManager _instance;//单例 private float volumn = 1.0f;//音量 private bool isMute = false; public float Volumn { get => volumn; set => volumn = value; ...原创 2020-07-05 12:32:59 · 204 阅读 · 0 评论 -
Unity3d:NGUI实现背包物品拖拽,交换位置
public class DragAndDropEquipment : UIDragDropItem { /// <summary> /// 重写拖动结束后 /// </summary> /// <param name="surface"></param> protected override vo...原创 2020-04-17 04:40:43 · 506 阅读 · 0 评论 -
Unity3d:UI显示网络延迟
public class PintTest : MonoBehaviour { public string ip = string.Empty;//IP地址 Ping ping;//Ping命令 string label;//延迟数据 public UILabel pingLabel;//NGUI label void Start() {...原创 2020-04-13 23:29:50 · 1072 阅读 · 0 评论 -
Unity3d:UI显示FPS
Application.targetFrameRate:重点=-1是默认显示public class FPSTest : MonoBehaviour { public float timeCount = 1f; //更新帧显示帧数的时间 public int defaultFPS = 30; //默认帧频 private float...原创 2020-04-13 22:29:28 · 418 阅读 · 0 评论 -
Unity3d:Mesh模拟英雄攻击范围扇形:
扇形攻击范围:使用代码生成mesh模拟扇形攻击范围:新建场景,新建一个Cube,此脚本挂在Cube上;public class DrawMeshSector : MonoBehaviour { //mesh代码生成的 public GameObject go; MeshFilter mf; MeshRenderer mr; Shader sha...原创 2020-03-18 02:32:28 · 829 阅读 · 0 评论 -
Unity3d:Mesh模拟英雄攻击范围圆圈:
圆圈攻击范围:使用代码生成mesh模拟圆圈攻击范围:新建场景,新建一个Cube,此脚本挂在Cube上;public class DrawMeshCircle : MonoBehaviour { //mesh代码生成的 public GameObject go; MeshFilter mf; MeshRenderer mr; Shader sha...原创 2020-03-18 02:25:20 · 503 阅读 · 0 评论 -
Unity3d:NavMeshAgent导航路径显示
使用LineRenderer画出导航路径核心代码如下: /// <summary> /// 画导航路线 /// </summary> private void DrawNavMeshAgentLine() { Vector3[] path = NavAgent.path.corners;//导航路径点 ...原创 2020-03-18 02:11:36 · 1025 阅读 · 0 评论 -
Unity3d:LineRenderer模拟英雄攻击范围扇形:
扇形攻击范围:使用LineRenderer模拟扇形攻击范围:新建场景,新建一个Cube,此脚本挂在Cube上;public class DrawSector: MonoBehaviour { void Start() { } void Update() { if (I...原创 2020-03-16 21:28:51 · 637 阅读 · 0 评论 -
Unity3d:LineRenderer模拟英雄攻击范围圆圈:
方法1:使用LineRenderer模拟圆圈攻击范围:新建场景,新建一个Cube,此脚本挂在Cube上;public class DrawCircle : MonoBehaviour { void Start() { } void Update() { if (Input.GetKeyDo...原创 2020-03-16 20:57:00 · 353 阅读 · 0 评论 -
Unity3d UGUI:判断鼠标是否在UI界面上
判断鼠标是否在UGUI的UI上,脚本实现IPointerDownHandler接口,需要挂载在UI上判断鼠标是否在UI上点击 public void OnPointerDown(PointerEventData eventData) { Debug.Log("点击了地图,点击的点为" + eventData.position.ToString()); ...原创 2020-01-08 05:24:54 · 1656 阅读 · 0 评论 -
Unity3d NGUI:判断鼠标是否在指定UI界面上
判断鼠标是否在NGUI的UI上,指定的UI需要添加BoxCollider//UICamera.isOverUI是判断鼠标是否在UI上点击 if (UICamera.isOverUI) { //UICamera.hoveredObject判断的是鼠标是否在指定UI上 if (UICamera.ho...原创 2020-01-08 05:14:56 · 820 阅读 · 0 评论 -
Unity3d,用代码动态添加动画事件
//绑定到宿主身上 public class AAAA : MonoBehaviour { private Animator animator;//animator组件 public AnimationClip[] clips;//动画片段 void Start() { animator = GetComponent<Anim...原创 2019-12-22 05:10:12 · 2693 阅读 · 0 评论 -
Unity3d NGUI UIButton的状态改变
private UIButton button; void Start(){ button = transform.Find("BanButton").GetComponent<UIButton>(); } void DisableBanButton() { button.GetComponent<BoxCollider>()...原创 2019-12-15 03:23:51 · 477 阅读 · 0 评论 -
Unity3d NGUI UILabel简单倒计时
private UILabel timeLabel;//倒计时的UILabel public bool isTimelabel = false;//是否开始计时 private float timeLabelCount;//时间 float times = 0;//间隔public void InitUI() { timeLabelCoun...原创 2019-12-11 16:35:18 · 378 阅读 · 0 评论 -
NGUI 按钮修改sprite运行无效的原因
在NGUI中用代码控制UIbutton的spritebutton..GetComponent<UISprite>().spriteName="2";运行之后点击,就会恢复到默认状态,正确的修改方式button..GetComponent<UIButton>().normalSprite="2";...原创 2019-11-17 09:14:28 · 426 阅读 · 1 评论 -
使用Gizmos给场景中的空物体添加一个标志
使用Gizmos添加的标志,只显示在Edit模式下,运行后是不会显示的,创建空物体,绑定如下代码:下面是示例代码://颜色 public Color color = Color.yellow; //半径 public float randius = 1f; // Use this for initialization void OnDraw...原创 2018-08-25 12:48:42 · 649 阅读 · 0 评论 -
unity3d摄像机跟随人物平滑移动的一个简单方法
一,场景中创建一个cube,绑定一个cube的移动方法的脚本CubeMove,代码如下:void Update () { //使用虚拟轴移动 float h = Input.GetAxis ("Horizontal"); float v = Input.GetAxis ("Vertical"); transfor...原创 2018-08-25 12:28:37 · 4207 阅读 · 1 评论 -
unity3d布料特效的简单使用
布料是柔软变形的,比如说随风飘扬的旗子,或者是窗帘,下面我就先讲讲怎么创建一个简单的布料使用。一,创建一个Plane,删除collider组件。二,点击Plane,AddComponent添加Cloth组件,为了明显起见,给Plane添加一张Texture图片,如下:添加Texture后 三,选择Plane,点击Cloth的edit,如下: Since视图就会变成下面这...原创 2018-08-25 11:42:39 · 4841 阅读 · 0 评论 -
Unity3d自己动手写导航菜单栏
创建特殊文件夹Editor,在Editor下创建脚本TestMenu.代码如下:public class TestMenu: MonoBehaviour { [MenuItem ("新的菜单栏/克隆选择的对象")] static void ClothObject () { Instantiate (Selection.activeTrans...原创 2018-08-23 10:43:49 · 842 阅读 · 0 评论 -
Unity3d中C#协程的几种调用方式
协程使用IEnumerator修饰符,yield return返回第一种方式:.IEnumerator Start() { Debug.Log ("开始等待:" + Time.time); yield return new WaitForSeconds (5); Debug.Log ("结束等待:" + Time.time);...原创 2018-08-22 11:01:38 · 2354 阅读 · 0 评论 -
unity3d 中JavaScript脚本和C#脚本的相互调用
本人亲测unityd5.56版本,打开Unity在Project视图下新建文件夹Standard Assets。新建JavaScript脚本:testJs,C#脚本testCs.testJs代码如下:function OnGUI() { //绘制button if(GUI.Button(Rect(25,25,100,30),"JS Cal...原创 2018-08-22 10:25:13 · 956 阅读 · 0 评论 -
C#面试题:求100以内的质数
质数是只能被1和他本身整除的数。 for (int i = 1; i <= 100; i++) { for (int j = 2; j <=i; j++) { if (i%j==0&&i!=j) ...原创 2018-08-30 18:20:30 · 882 阅读 · 0 评论 -
C#面试题:一群小孩围成一个圈的经典算法
一群小孩围成一个圈,从第一个开始报数,报到5的小孩退出圈,继续,求剩下的最后一个小孩的编号。代码如下:public static int count = 0;//计数器 public static int target = 5;//指定编号 public static void Main (string[] args) { ...原创 2018-08-31 00:00:39 · 1280 阅读 · 0 评论