當前位置:首頁 » 挖礦知識 » peerunity挖礦

peerunity挖礦

發布時間: 2022-08-23 09:11:56

A. 准備自學unity3D,從C#開始。。。請問是買Macbookpro好還是PC台式機好

當然是PC了,C#是運行在.NET平台上的,而.NET對MacOS系統非常不友好,因此還是推薦WIndows系統的PC

B. unity 運行沒問題 出的apk經常與伺服器斷開連接是什麼回事

最近被一個問題糾纏了好久,終於找到解決辦法,這里做個記錄。
我們做的一款游戲在編輯器里跑的好好的,一打包的手機上就各種崩潰;
而且是不確定什麼時候出現,用logcat查看了系統日誌,就看到是異常地址訪問的log,沒有什麼有價值的信息。
重復試了好多次之後,發現每次進一個測試關卡的時候必閃退,於是一路上加日誌,希望能知道是哪一句導致程序崩潰。
加到最後,場景載入完了,一切都正常。可以推斷載入場景過程沒問題,應該是在某一個組件腳本的update裡面出問題的。
這下線索又斷了,因為掛update的組件太多,而且不知道有哪些組件運行;這里就想到一個想法,我們以後的代碼應該都由程序自己去調用update,
不要直接用u3d的update,這樣我們可以很容易的知道哪些代碼在運行,而且是可以保證調用次序的。
接著想了個辦法,就是進場景後,逐個把有update的函數禁用,發現某個組件禁用後就不閃退了,於是問題定位到這個組件的update函數。
通過逐條的增加日誌,最終定位到一個空引用訪問上,導致程序在安卓機上閃退!懷疑是安卓sdk在運行時的jit直接變成了機器指令,導致可能的空異常。
這個問題讓我很驚訝,原來以為會拋出空引用異常,沒想到很c#的空指針訪問一樣會導致進程崩潰。於是組織大家把所有可能為空的地方排查可一遍。
另外在編輯器里沒問題,是因為編輯器里載入資源是同步載入的,所以載入完直接使用載入後的對象是沒問題的;
但是在手機上要從assertbundle中載入,使用了非同步過程,會導致後續的訪問可能存在訪問空異常;
於是把編輯器里的載入也改成非同步載入,編輯器中就能跟手機上一樣的載入過程,盡量暴露手機上運行可能出現的問題

C. PhotonServer伺服器連接mysql資料庫報錯,實在無力了,求大神!

本文將對NHibernate數據進行簡單封裝,方便在PhotonServer伺服器中進行調用

[csharp]view plain

  • usingNHibernate;

  • usingNHibernate.Cfg;

  • usingMyGameServer.Domain;

  • usingNHibernate.Criterion;

  • usingSystem.Collections.Generic;

  • namespaceMyGameServer.Helper

  • {

  • {

  • =null;

  • privatestaticISessionsession=null;

  • {

  • get

  • {

  • if(sessionFactory==null)

  • {

  • Configurationcfg=newConfiguration();

  • //解析固定路徑配置文件nhibernate.cfg.xml

  • cfg.Configure();

  • //映射目標程序集解析映射文件Student.xml......

  • cfg.AddAssembly(typeof(Student).Assembly);

  • //獲取會話對象

  • sessionFactory=cfg.BuildSessionFactory();

  • }

  • session=sessionFactory.OpenSession();

  • returnsession;

  • }

  • privateset{}

  • }

  • //添加行

  • publicstaticvoidAddData<T>(Tt)

  • {

  • using(ISessionsession=GetSession)

  • {

  • using(ITransactiontransaction=session.BeginTransaction())

  • {

  • GetSession.Save(t);

  • transaction.Commit();

  • }

  • }

  • }

  • //添加列

  • publicstaticvoidRemoveData<T>(Tt)

  • {

  • using(ISessionsession=GetSession)

  • {

  • using(ITransactiontransaction=session.BeginTransaction())

  • {

  • GetSession.Delete(t);

  • transaction.Commit();

  • }

  • }

  • }

  • //通過ID獲取對象

  • publicstaticTGetDataById<T>(intid)

  • {

  • using(ISessionsession=GetSession)

  • {

  • using(ITransactiontransaction=session.BeginTransaction())

  • {

  • Tt=session.Get<T>(id);

  • transaction.Commit();

  • returnt;

  • }

  • }

  • }

  • ///<summary>

  • ///通過名稱獲取對象

  • ///</summary>

  • ///<typeparamname="T">需要獲取的對象</typeparam>

  • ///<paramname="dataBaseName">在資料庫中的列名稱</param>

  • ///<paramname="targetName">獲取對象的目標名</param>

  • ///<returns></returns>

  • publicstaticTGetDataByName<T>(stringdataBaseName,stringtargetName)

  • {

  • using(ISessionsession=GetSession)

  • {

  • Tt=session.CreateCriteria(typeof(T)).Add(Restrictions.Eq(dataBaseName,targetName)).UniqueResult<T>();

  • returnt;

  • }

  • }

  • ///<summary>

  • ///得到表內的全部對象

  • ///</summary>

  • ///<typeparamname="T"></typeparam>

  • ///<returns></returns>

  • publicstaticICollection<T>GetAllUsers<T>()

  • {

  • using(ISessionsession=GetSession)

  • {

  • IList<T>ts=session.CreateCriteria(typeof(T)).List<T>();

  • returnts;

  • }

  • }

  • //查詢是否有符合id和姓名相同的對象

  • publicstaticboolVerifyUser<T>(paramsobject[]arg)

  • {

  • using(ISessionsession=GetSession)

  • {

  • Tt=session

  • .CreateCriteria(typeof(T))

  • .Add(Restrictions.Eq(arg[0].ToString(),arg[1]))//類屬性名屬性值

  • .Add(Restrictions.Eq(arg[2].ToString(),arg[3]))

  • .UniqueResult<T>();

  • if(t==null)

  • {

  • returnfalse;

  • }

  • returntrue;

  • }

  • }

  • ///<summary>

  • ///更新數據表

  • ///</summary>

  • ///<typeparamname="T">數據表映射的對象</typeparam>

  • ///<paramname="t"></param>

  • publicstaticvoidUpdateData<T>(Tt)

  • {

  • using(ISessionsession=GetSession)

  • {

  • using(ITransactiontransaction=session.BeginTransaction())

  • {

  • session.Update(t);

  • transaction.Commit();

  • }

  • }

  • }

  • }

  • }



  • 在主函數調用

    [csharp]view plain

  • usingNHibernate;

  • usingNHibernate.Cfg;

  • usingLJL.Domain;

  • usingLJL.Helper;

  • namespaceLJL

  • {

  • classProgram

  • {

  • staticvoidMain(string[]args)

  • {

  • Studentsd=newStudent{mID=6,mName="小張",mScore=10};

  • NHibernateHelper.AddData(sd);

  • }

  • }

  • }



  • 運行程序,一切正常,打開SQLyog,在student數據表中添加一行數據

    接下來就是在PhotonServer中調用,來實現與MySQL資料庫交互

    按圖下將類、配置文件集成到類庫中(注意需要修改下類和配置文件中的程序集及命名空間)


    我們的游戲有很多中請求(比如登入、注冊請求等等)

    所以都繼承自BaseRequest

    [csharp]view plain

  • usingExitGames.Client.Photon;

  • usingSystem.Collections;

  • usingSystem.Collections.Generic;

  • usingUnityEngine;

  • :MonoBehaviour

  • {

  • [HideInInspector]

  • //該請求的操作類型

  • publicCollective.OperationModeoperationMode=Collective.OperationMode.Default;

  • publicvirtualvoidStart(){}

  • ();

  • ();

  • }



  • 這里博主簡單的做了一下登錄請求

    [csharp]view plain

  • usingExitGames.Client.Photon;

  • usingSystem.Collections;

  • usingSystem.Collections.Generic;

  • usingUnityEngine;

  • usingUnityEngine.UI;

  • publicclassLoginRequest:BaseRequest

  • {

  • //用戶名

  • privateInputFieldmInputName;

  • //密碼

  • ;

  • publicoverridevoidStart()

  • {

  • operationMode=Collective.OperationMode.LOGIN;

  • GameContext.GetInstance.AddRequest(this);

  • mInputName=GameObject.Find("IDInputField").GetComponent<InputField>();

  • mInputPassword=GameObject.Find("NameInputField").GetComponent<InputField>();

  • //登錄按鈕點擊事件

  • GameObject.Find("LoginButton").GetComponent<Button>().onClick.AddListener(()=>{OnOperationRequest();});

  • }

  • ()

  • {

  • GameContext.GetInstance.peer.OpCustom(

  • (byte)this.operationMode,

  • newDictionary<byte,object>{{(byte)Collective.ParameterMode.NAME,mInputName.text},{(byte)Collective.ParameterMode.PASSWORD,mInputPassword.text}},

  • true

  • );

  • }

  • ()

  • {

  • Collective.OperationResultresultCode=(Collective.OperationResult)operationResponse.ReturnCode;

  • if(resultCode==Collective.OperationResult.SUCCESS)

  • {

  • //登錄成功

  • Debug.Log("用戶登錄成功");

  • }

  • elseif(resultCode==Collective.OperationResult.FAIL)

  • {

  • //登錄失敗

  • Debug.Log("登錄失敗");

  • }

  • }

  • }



  • 最後附上上篇博文GameContext腳本,在這里有些地方發生了更新

    [csharp]view plain

  • usingSystem.Linq;

  • usingSystem.Collections.Generic;

  • usingUnityEngine;

  • usingUnityEngine.UI;

  • usingExitGames.Client.Photon;

  • publicclassGameContext:MonoBehaviour,IPhotonPeerListener

  • {

  • ///<summary>

  • ///存儲操作類型與請求

  • ///</summary>

  • publicDictionary<Collective.OperationMode,BaseRequest>requestDic=newDictionary<Collective.OperationMode,BaseRequest>();

  • publicPhotonPeerpeer;

  • privatestaticGameContext_instance;

  • {

  • get

  • {

  • if(_instance==null)

  • {

  • _instance=GameObject.Find("GameContext").GetComponent<GameContext>();

  • }

  • return_instance;

  • }

  • }

  • publicvoidDebugReturn(DebugLevellevel,stringmessage)

  • {

  • }

  • //接收伺服器發來的事件

  • publicvoidOnEvent(EventDataeventData)

  • {

  • switch(eventData.Code)

  • {

  • case0:

  • //獲取事件數據

  • objectvalue=eventData.Parameters.FirstOrDefault(q=>q.Key==1).Value;

  • Debug.Log(value.ToString());

  • break;

  • default:

  • break;

  • }

  • }

  • //接收響應數據(客戶端發送了請求)

  • publicvoidOnOperationResponse()

  • {

  • BaseRequestrequest=requestDic.FirstOrDefault(q=>q.Key==(Collective.OperationMode)operationResponse.OperationCode).Value;

  • if(request!=null)

  • {

  • request.OnOperationResponse(operationResponse);

  • }

  • else

  • {

  • //獲取響應數據失敗

  • Debug.LogError("獲取響應數據失敗");

  • }

  • }

  • //連接狀態發送改變

  • publicvoidOnStatusChanged(StatusCodestatusCode)

  • {

  • Debug.Log("數據連接狀態發生的改變:"+statusCode);

  • }

  • privatevoidStart()

  • {

  • //傳輸協議UDP、通過Listener接收伺服器端的響應

  • peer=newPhotonPeer(this,ConnectionProtocol.Udp);

  • //連接本地伺服器

  • peer.Connect("127.0.0.1:5055","MYGameServer");

  • }

  • privatevoidUpdate()

  • {

  • //和伺服器實時保持數據連接

  • peer.Service();

  • }

  • privatevoidOnDestroy()

  • {

  • if(peer!=null&&peer.PeerState==PeerStateValue.Connected)

  • {

  • //斷開連接

  • peer.Disconnect();

  • }

  • }

  • publicvoidAddRequest(BaseRequestrequest)

  • {

D. 點點幣錢包下載全是英文看不懂怎麼辦

大部分比特幣錢包都是英文版的,因為英文是全球使用范圍和使用人數最多的一種語言,大多數全球性的應用型手機APP首先開發是英文版的,其它的版本會隨後開通。目前,手機比特幣錢包有中文版本的,例如比太錢包。比太錢包是國內的一個技術團隊開發運作的,技術團隊實力不容小覷,雖然幣價不景氣,但其團隊仍然不離不棄,在不懈的努力,值得尊敬。比太錢包也非常好用,目前支持安卓和蘋果系統。

E. UNITY3D游戲下載不了

很簡單。多刷新幾次。或者點擊windows開始--->運行--->輸入services.msc 然後在服務裡面選Terminal Services右擊屬性--->將啟動類型更改為自動,然後應用--->再右擊啟動--->保證服務狀態為已啟動--->關閉窗口。已安裝插件的刷新即可。

熱點內容
以太坊錢包只有usdt怎麼轉出 發布:2024-11-17 08:45:32 瀏覽:280
ad幣有礦機嗎 發布:2024-11-17 08:28:22 瀏覽:775
怎麼注冊萊特幣的錢包 發布:2024-11-17 08:28:19 瀏覽:601
天天蓋大樓3挖礦進不去 發布:2024-11-17 08:22:04 瀏覽:246
最強挖礦者 發布:2024-11-17 08:13:10 瀏覽:991
比特幣礦機算力4t 發布:2024-11-17 07:31:25 瀏覽:482
比特熱點bth挖礦 發布:2024-11-17 07:30:43 瀏覽:381
幣圈交易所全球100排名 發布:2024-11-17 07:19:04 瀏覽:541
我的世界刷礦機的原理 發布:2024-11-17 07:05:28 瀏覽:950
礦機銷售銷招聘 發布:2024-11-17 06:52:36 瀏覽:84