Unity 2D 流體插件 Water2dPro

為了在unity 中制作奶茶混合效果闯团,使用流體插件 Water2dPro
這里記錄使用過程中遇到的問題

插件固定了生成流體類型的方法,無法自定義更改流體材質(zhì)及預制

解決方案:修改 Water2D_Spawner的Inspector 腳本,自定義顯示

//Water2DEditor.cs   684行左右
SerializedProperty waterM = serializedObject.FindProperty("WaterMaterial");
SerializedProperty waterObj = serializedObject.FindProperty("DropObject");
EditorGUILayout.PropertyField(waterM);
EditorGUILayout.PropertyField(waterObj);
image.png

插件自動生成的攝像機組件包含背景

解決方案: 注釋背景攝像機代碼
ResizeQuadEffectController.cs

        // if (gameObject.transform.parent.parent.Find("0-BGCamera"))
        //     backgroundCamera = gameObject.transform.parent.parent.Find("0-BGCamera").gameObject;
        //
        // // Only for toon style
        // if (backgroundCamera != null)
        // {
        //     RenderTexture BackgroundRT = new RenderTexture(width, height, 24, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Default);
        //     GetComponent<MeshRenderer>().sharedMaterial.SetTexture("_BackgroundTex", BackgroundRT);
        //     backgroundCamera.GetComponent<Camera>().forceIntoRenderTexture = true;
        //     backgroundCamera.GetComponent<Camera>().targetTexture = BackgroundRT;
        // }

這里要注意以清,該腳本會獲取主攝像機的 size,所以場景中必須有mainCamera

Water腳本 生成的流體對象出現(xiàn)無法消除的問題

原因: 插件在生成水滴對象時對對象的父類添加了隱藏在Hierarchy面板顯示的標簽


            _parent = new GameObject(_parentNameID + gameObject.GetInstanceID());
            _parent.transform.SetParent(transform);
            //_parent.transform.hideFlags = HideFlags.HideInHierarchy;

            WaterDropsObjects = new GameObject[DropCount];

這里我已經(jīng)注釋掉了凸舵,如果不注釋 ,可能會出現(xiàn)在頻繁測試過程中荚孵,出現(xiàn)不可消除水滴而又無法從面板找到清楚的現(xiàn)象妹窖。
解決方案:如果已經(jīng)出現(xiàn),復制現(xiàn)有場景里的對象到新的場景中,棄用以前的場景收叶。注釋掉隱藏代碼骄呼,或者添加自定義父對象。

將流體組件添加到預制體導致運行游戲時流體對象丟失引用,游戲或者測試過程中重復產(chǎn)生多個無索引流體對象

原因:因為流體對象是動態(tài)生成并綁定對象的蜓萄,所以不能添加到預制體中隅茎,在添加流體組件后,原始代碼會在編輯器Update中檢測并生成設(shè)定數(shù)量的流體對象并綁定流體組件嫉沽,在運行游戲的時候直接調(diào)用這些組件患膛。為了方便管理,將組件添加到預制體里之后耻蛇,會丟失這些引用關(guān)系踪蹬,運行游戲時,要么找不到引用臣咖,要么在退出游戲時重復生成對象跃捣。
解決方法:
修改綁定方法,判斷并刪除重復生成的對象

        public void SetupParticles()
        {
            Debug.Log("Bind");
            // if (_parent == null && WaterDropsObjects != null)
            // {
            //     Debug.Log(1);
            //     if (WaterDropsObjects.Length > 0 && WaterDropsObjects[0] != null)
            //         _parent = WaterDropsObjects[0].transform.parent.gameObject;
            // }
            // if(_parent != null){
            //     Debug.Log(2);
            //     DestroyImmediate(_parent);
            //
            // }

            

            Transform tran = transform.Find(_parentNameID + gameObject.GetInstanceID());
            if(tran) DestroyImmediate(tran.gameObject);

            _parent = new GameObject(_parentNameID + gameObject.GetInstanceID());
            _parent.transform.SetParent(transform);
            //_parent.transform.hideFlags = HideFlags.HideInHierarchy;

            WaterDropsObjects = new GameObject[DropCount];

            
            .........
}

同時移除EditorUpdate中自動生成綁定的檢測方法(之后測試需要手動綁定)

     private void OnEditorUpdate()
        {
            if (Application.isPlaying)
                return;


            if (DropObject == null)
                return;

            // if (WaterDropsObjects == null || WaterDropsObjects.Length < 1)
            // {
            //     SetupParticles();
            // }
            //
            // if (WaterDropsObjects[0] == null)
            // {
            //     SetupParticles();
            // }
            .........
        }  

在Start方法中添加綁定檢測 (生成預制體時調(diào)用)

        private void Start()
        {
            StartCoroutine(StartEnumerator());
          
            //Register
            SpawnersManager.ChangeSpawnerValues(instance);

            if (WaterDropsObjects == null || WaterDropsObjects.Length < 1)
            {
                SetupParticles();
            }

            if (WaterDropsObjects[0] == null)
            {
                SetupParticles();
            }
        }

Water2D 的實現(xiàn)原理-----Camera.targetTexture

通過特效相機對layer 為water 的spriterender 圖片進行紋理混合(混合shader原理后面再看)夺蛇,然后將混合后的整個紋理渲染到主攝像機里疚漆,所以兩個攝像機的size必須一致,不然就會有顯示偏差


image.png

image.png

Water2D 設(shè)置選項Flip Camera Texture

image.png

勾選此項刁赦,會鏡像翻轉(zhuǎn) tagertTexture 的顯示

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末娶聘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子甚脉,更是在濱河造成了極大的恐慌丸升,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牺氨,死亡現(xiàn)場離奇詭異狡耻,居然都是意外死亡,警方通過查閱死者的電腦和手機猴凹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門夷狰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人郊霎,你說我怎么就攤上這事沼头。” “怎么了书劝?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵进倍,是天一觀的道長。 經(jīng)常有香客問我庄撮,道長背捌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任洞斯,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘烙如。我一直安慰自己么抗,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布亚铁。 她就那樣靜靜地躺著蝇刀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪徘溢。 梳的紋絲不亂的頭發(fā)上吞琐,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音然爆,去河邊找鬼站粟。 笑死,一個胖子當著我的面吹牛曾雕,可吹牛的內(nèi)容都是我干的奴烙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼剖张,長吁一口氣:“原來是場噩夢啊……” “哼切诀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起搔弄,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤幅虑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后顾犹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翘单,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年蹦渣,在試婚紗的時候發(fā)現(xiàn)自己被綠了哄芜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡柬唯,死狀恐怖认臊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锄奢,我是刑警寧澤失晴,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站拘央,受9級特大地震影響涂屁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜灰伟,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一拆又、第九天 我趴在偏房一處隱蔽的房頂上張望儒旬。 院中可真熱鬧,春花似錦帖族、人聲如沸栈源。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽甚垦。三九已至,卻和暖如春涣雕,著一層夾襖步出監(jiān)牢的瞬間艰亮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工挣郭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留迄埃,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓丈屹,卻偏偏與公主長得像调俘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子旺垒,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容