做展厅项目或者其它定制化桌面程序,经常需要设置开机自启动,且把无关的窗口最小化。
本人试过在开机自启的时候写txt脚本让某程序最小化,结果不太如意。
一怒之下,直接用Unity自己写个小插件实现这个小功能。
经测试,可实现根据某个窗口名称隐藏该窗口,但不适用窗口名称带中文的。可根据系统进程名称最小化窗口。
代码如下:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using UnityEngine;
using WindowsHandler;
public class WindowMin : MonoBehaviour
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
[DllImport("user32.dll", EntryPoint = "FindWindow")]
private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
// Start is called before the first frame update
void Start()
//以下为根据窗口名称隐藏窗口
IReadOnlyList<WindowInfo> list=WindowEnumerator.FindAll();
string mm="";
Tools.WriteTxt(Application.streamingAssetsPath+"/2.txt",mm);
for (int i = 0; i < list.Count; i++)
mm+="\n"+list[i].Title;
Debug.Log(list[i].Title);
Tools.WriteTxt(Application.streamingAssetsPath+"/2.txt",mm);
return;
//以下根据进程隐藏窗口
string str = Tools.LoadString(Application.streamingAssetsPath + "/1.txt");
//User32API.GetHandleByProcessName(str);
IntPtr a=FindWindow(null,str);
if(a!=IntPtr.Zero){
Application.Quit();
ShowWindow(a, 2);
// ShowWindow(GetForegroundWindow(), 2);
StartCoroutine(AA());
IEnumerator AA(){
yield return new WaitForSeconds(1);
Application.Quit();
// Update is called once per frame
void Update()
将代码随便挂在某个物体上,然后打包,在StreamingAssets文件夹的txt里面填入窗口名称或进程名称,运行即可。
相关工程链接及打包文件地址:https://download.csdn.net/download/qq_33155437/85444324
System.Drawing.dll
System.Windows.Forms.dll
System.Deployment.dll(运用基于.Net4.x的dll打包时,需要用到该dll,否则会报错)
代码如下:
using System;
using System.Runtime.InteropSe...
先新建一个Weapon,在里面存放各种武器,武器由Anchor和States构成,Anchor里存放设计(外观)以及一些Resources,States保存武器的状态,Hip表示默认状态,Ads表示瞄准状态。
先来看一下Weapon脚本。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Weapon : MonoBehaviour
#region Variables
自己总结出来的unity3d发布窗口设置,可以指定位置,大小,窗口式样(边框,标题,按钮,滚动条,隐藏,激活,置顶,置底等)。
下载之后直接把脚本挂物体上就可使用。
如果有不明白的请打开脚本,脚本里面的注释已经写得很清楚了。
??第三款:Texture Web View (Android)
??第四款:Mobile Web View (Android, iOS)
??第五款:ULiteWebView Unity
??第六款:3D WebView for Windows and macOS
??第七款:3D WebView for Android
??第八款:3D WebVi
选自过去1~2周 自己所看到外文内容:https://twitter.com/unity3d 和各种其他博客来源吧 早就有了,抱歉才发!
1、 Unity Transform 性能优化摘要
https://qiita.com/sator_imaging/items/ff5811885f515a0a4998
由于我有机会在逐帧的基础上处理大量的Transform ,我想总结一下...
——SetActive
优点:方便快捷
缺点:SetActive(false)的物体上面挂载的脚本也不运行了,而很多时候我们需要那个脚本运行。这样就不能使用SetActive(true)或者SetActive(false)。如果把自己的引用给另外一个脚本来对自己SetActive(true)或者SetActive(false),又会造成多余的耦合,并不符合OOP设计理念
using System.Runtime.InteropServices;
using System.Diagnostics;
using Debug = UnityEngine.Debug;
public class MainScriptfull : MonoBehaviour
//通过非托管方式导入dll。这里是导入user32.dll。
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
[DllImport("user32.dl.
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
using System;
public class WindowMaxMin : MonoBehaviour
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr h.
前段时间做Windows程序,由一个H5开发的书架调起Unity开发的场景漫游,这之间需要进行窗口的全屏显示和最小化。这里使用引入User32.dll的方法,再调用ShowWindow方法控制程序窗口大小。方法如下:
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hwnd, int n...
获取原理:unity 所有窗口界面都继承自编辑器UnityEditor程序集下的EditorWindow。而所有的编辑器窗口都在UnityEditor程序集里定义,所以,我们通过反射获取UnityEditor程序集获取所有窗口就可以了。
直接上代码:
using System;
using System.Collections;
using System.Collections.Generi...