Unity3D 場景與C# Control進行結合

?楊航最近在自學Unity3D,打算使用這個時髦、流行、強大的游戲引擎開發一個三維業務展示系統,不過發現游戲的UI和業務系統的UI還是有一定的差別,很多的用戶還是比較習慣WinForm或者WPF中的UI形式,于是在網上搜了一下WinForm和Unity3D如何集成,結果不是非常令人滿意,絕大多數的回答是“No?Way”,也有人給出了使用WebBrowser控件的形式,說實話這種還算是比較靠譜的,以前也這么干過類似的事情;后來搜到一篇帖子說是可以使用U3D?WebPlayer控件,抱著試試看的想法,新建了一個winform應用,在工具箱里面還真找到了UnityWebPlayer?Control這么一個控件:?
???????????
??????????
?????????
?????????
?????????
??????????
??????????
?????????
???????????將它拖到form上以后,發現屬性很少,大部分都是Control的屬性,不過還是發現了一個很重要的屬性:src,這里將發布的web包地址寫進去,運行一下,奇跡出現了,竟然出現了三維場景界面。。。
??????????
??????????
??????????
??????????
???????????
???????????
??????????
????????????請忽略三維場景內容,實在是拿不出手哇
???????????
???????????
???????????這里留一個問題:.unity3d?文件的路徑只能在設計時的屬性窗口直接賦值,在Form的構造函數或者Load事件中賦值都沒有效果,具體原因還沒找到。
??????????
??????????這樣的話算是實現了之前的需求:將U3D和Winform結合,不過winform的控件如何和U3D進行交互呢?再看一下UnityWebPlayerClass類的定義,發現有一個SendMessage方法,和U3D自身腳本的SendMessage定義一樣。?
?????????
??????????
??????????
??????????下面首先在U3D中創建一個C#腳本,添加一個非常簡單的函數:?
??????????void?Down()
?????????{
????????????transform.Translate(?Vector3.down?*?Time.deltaTime?);
?????????}?
?????????  將腳本拖到叫做Sphere的對象上面。然后在窗體上添加一個按鈕,在按鈕的click事件中調用上面定義的方法:?
??????????axUnityWebPlayer1.SendMessage(?"Sphere",?"Down",?null?);  再次運行,不停地點擊按鈕,就可以看到小球緩慢往下移動的效果了。  
??????????
???????????
????????????
?????????  經過上面的嘗試,總算是初步解決了U3D和Winform(WPF也類似)集成的問題,不過核心的對象控制代碼還是得在U3D中寫好、編譯才行,winform只是提供了一個更為習慣的UI而已。不知道是否還有更好、更方便、更強大的方法,期待。。。?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388215.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388215.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388215.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據質量提升_合作提高數據質量

數據質量提升Author Vlad Ri?cu?ia is joined for this article by co-authors Wayne Yim and Ayyappan Balasubramanian.作者 Vlad Ri?cu?ia 和合著者 Wayne Yim 和 Ayyappan Balasubramanian 共同撰寫了這篇文章 。 為什么要數據質量? (Why data quality?) …

黑魔法(method-swizzling)解決第三方庫引發的問題

需求 最近做一個項目中,有個需求,所有網絡請求,都不顯示 NetworkActvityIndicator(也就是狀態欄里旋轉的小圈圈). 解決過程1: 全局搜索 NetworkIndicator 關鍵字, 把所有涉及 NetworkIndicator …

Python 操作 MySQL 的5種方式(轉)

Python 操作 MySQL 的5種方式 不管你是做數據分析,還是網絡爬蟲,Web 開發、亦或是機器學習,你都離不開要和數據庫打交道,而 MySQL 又是最流行的一種數據庫,這篇文章介紹 Python 操作 MySQL 的5種方式,你可以…

unity3d 人員控制代碼

普通瀏覽復制代碼private var walkSpeed : float 1.0;private var gravity 100.0;private var moveDirection : Vector3 Vector3.zero;private var charController : CharacterController;function Start(){charController GetComponent(CharacterController);animation.w…

刪除wallet里面登機牌_登機牌丟失問題

刪除wallet里面登機牌On a sold-out flight, 100 people line up to board the plane. The first passenger in the line has lost his boarding pass but was allowed in regardless. He takes a random seat. Each subsequent passenger takes their assigned seat if availa…

PHP 備份還原 MySql 數據庫

原生 PHP 備份還原 MySql 數據庫 支持 MySql,PDO 兩種方式備份還原 php5.5 以上的版本建議開啟pdo擴展,使用 pdo 備份還原數據 備份文件夾 db_backup、import/log 文件要有讀寫權限環境版本 本人測試環境 php:5.5.38 /5.6.27-nts/7.0.12-nts; mysql: 5.5…

Java? 教程(Queue接口)

Queue接口 Queue是在處理之前保存元素的集合&#xff0c;除了基本的Collection操作外&#xff0c;隊列還提供額外的插入、刪除和檢查操作&#xff0c;Queue接口如下。 public interface Queue<E> extends Collection<E> {E element();boolean offer(E e);E peek();…

字符串操作截取后面的字符串_對字符串的5個必知的熊貓操作

字符串操作截取后面的字符串We have to represent every bit of data in numerical values to be processed and analyzed by machine learning and deep learning models. However, strings do not usually come in a nice and clean format and require preprocessing to con…

最新 Unity3D鼠標滑輪控制物體放大縮小 [

var s 1.0;function Update () {var cube GameObject.Find("Cube");if(Input.GetAxis("Mouse ScrollWheel")){s Input.GetAxis("Mouse ScrollWheel");cube.transform.localScaleVector3(1*s,1*s,1*s);}}

sublime-text3 安裝 emmet 插件

下載sublime&#xff0c;http://www.sublimetext.com/ 安裝package control &#xff1a;https://packagecontrol.io/ins... 這個地址需要翻墻&#xff0c;訪問不了的可以看下圖 import urllib.request,os,hashlib; h 6f4c264a24d933ce70df5dedcf1dcaee ebe013ee18cced0ef93d…

數據科學家訪談錄 百度網盤_您應該在數據科學訪談中向THEM提問。

數據科學家訪談錄 百度網盤A quick search on Medium with the keywords “Data Science Interview” resulted in hundreds of Medium articles to help guide the reader from what concepts are covered to even specific company interviews ranging from Tesla, Walmart, …

unity3d]鼠標點擊地面人物自動走動(也包含按鍵wasdspace控制)

目錄(?)[-] 一效果圖二大概步驟 創建一個plane設置層為Terrain因為后面要判斷是否點擊的是這個層準備好人物模型并且將三個腳本拖放到人物上并且將動畫文件也拖放好記得看前面提醒哦 ThirdPersonCamera相當于smoothflowThirdPersonController修改版mouseMoveContr鼠標點擊人物…

uva 524(Prime Ring Problem UVA - 524 )

dfs練習題,我素數打表的時候ji了&#xff0c;一直沒發現實際上是ji*i&#xff0c;以后可記住了。還有最后一行不能有空格。。。昏迷了半天 我的代碼(紫書上的算法) #include <bits/stdc.h> using namespace std; int bk[110]; int num[110]; int vis[110]; int n; void d…

Web 開發基礎

一、 Web 開發簡介 最早的軟件都是運行在大型機上的&#xff0c;軟件使用者登陸到大型機上去運行軟件。后來隨著 PC 機的興起&#xff0c;軟件開始主要運行在桌面上&#xff0c;而數據庫這樣的軟件運行在服務器端&#xff0c;這種 Client/Server 模式簡稱 CS 架構。隨著互聯網的…

power bi函數_在Power BI中的行上使用聚合函數

power bi函數Aggregate functions are one of the main building blocks in Power BI. Being used explicitly in measures, or implicitly defined by Power BI, there is no single Power BI report which doesn’t use some sort of aggregate functions.聚合功能是Power BI…

關于如何在Python中使用靜態、類或抽象方法的權威指南

Python中方法的工作方式 方法是存儲在類屬性中的函數&#xff0c;你可以用下面這種方式聲明和訪問一個函數 >>> class Pizza(object):... def __init__(self, size):... self.size size... def get_size(self):... return self.size...>&…

廣義估計方程估計方法_廣義估計方程簡介

廣義估計方程估計方法A key assumption underpinning generalized linear models (which linear regression is a type of) is the independence of observations. In longitudinal data this will simply not hold. Observations within an individual (between time points) …

css二

結構性偽類:nth-child(index)系列1.:first-child2.:last-child3.nth-last-child(index)4.only-child :nth-of-type(index)系列1.first-of-type2.last-of-type3.nth-last-type(index)4.only-of-type :not偽類處理導航欄最后一個豎劃線a:not(:last-of-type) :empty偽類 選中所有內…

Unity3d鼠標點擊屏幕來控制人物的走動

今天呢&#xff0c;我們來一起實現一個在RPG中游戲中十分常見的功能&#xff0c;通過鼠標點擊屏幕來控制人物的走動。首先來說一下原理&#xff0c;當我們點擊屏幕時&#xff0c;我們按照一定的方法&#xff0c;將屏幕上的二維坐標轉化為三維坐標&#xff0c;然后我們從攝像機位…

Java中的ReentrantLock和synchronized兩種鎖定機制的對比

2019獨角獸企業重金招聘Python工程師標準>>> 多線程和并發性并不是什么新內容&#xff0c;但是 Java 語言設計中的創新之一就是&#xff0c;它是第一個直接把跨平臺線程模型和正規的內存模型集成到語言中的主流語言。核心類庫包含一個 Thread 類&#xff0c;可以用它…